22d5103c by TaishiTokudome

イントロ画像登録時の画像リサイズ処理

1 parent d7c66042
...@@ -1173,13 +1173,24 @@ class WFFileBrowser extends JObject ...@@ -1173,13 +1173,24 @@ class WFFileBrowser extends JObject
1173 1173
1174 // get uploaded file 1174 // get uploaded file
1175 $file = $app->input->files->get('file', array(), 'raw'); 1175 $file = $app->input->files->get('file', array(), 'raw');
1176 1176 $file['size'] = 40;
1177 // error_log("====================================================================================================================\n", 3, '/var/www/html/debug.log');
1178 // error_log("outputed from " . __FILE__ . "\n", 3, '/var/www/html/debug.log');
1179 // error_log('file = ', 3, '/var/www/html/debug.log');
1180 // error_log(print_r($file, true) . "\n", 3, '/var/www/html/debug.log');
1181 // error_log("====================================================================================================================\n", 3, '/var/www/html/debug.log');
1182 // error_log("ここまで\n\n", 3, '/var/www/html/debug.log');
1177 // validate file 1183 // validate file
1178 $this->validateUploadedFile($file); 1184 $this->validateUploadedFile($file);
1179 1185
1180 // get file name 1186 // get file name
1181 $name = (string) $app->input->get('name', $file['name'], 'STRING'); 1187 $name = (string) $app->input->get('name', $file['name'], 'STRING');
1182 1188 // error_log("====================================================================================================================\n", 3, '/var/www/html/debug.log');
1189 // error_log("outputed from " . __FILE__ . "\n", 3, '/var/www/html/debug.log');
1190 // error_log('name = ', 3, '/var/www/html/debug.log');
1191 // error_log(print_r($name, true) . "\n", 3, '/var/www/html/debug.log');
1192 // error_log("====================================================================================================================\n", 3, '/var/www/html/debug.log');
1193 // error_log("ここまで\n\n", 3, '/var/www/html/debug.log');
1183 // decode 1194 // decode
1184 $name = rawurldecode($name); 1195 $name = rawurldecode($name);
1185 1196
...@@ -1238,6 +1249,56 @@ class WFFileBrowser extends JObject ...@@ -1238,6 +1249,56 @@ class WFFileBrowser extends JObject
1238 throw new InvalidArgumentException(JText::_('WF_MANAGER_FILE_LIMIT_ERROR')); 1249 throw new InvalidArgumentException(JText::_('WF_MANAGER_FILE_LIMIT_ERROR'));
1239 } 1250 }
1240 } 1251 }
1252 /**
1253 * 画像リサイズ処理
1254 */
1255 $fieldid = (string) $app->input->get('fieldid', '', 'STRING');
1256 // ファイルがイントロ画像としてアップロードされていることを確認
1257 if ($fieldid === 'jform_images_image_intro') {
1258 // tmpディレクトリに一時保存されているupload予定のファイルパスを取得
1259 $tmp_file = $file['tmp_name'];
1260 // 画像を取得
1261 $img = file_get_contents($tmp_file);
1262 // 画像のエンコード
1263 $enc_img = base64_encode($img);
1264 // 画像URLを作成
1265 $image_url = 'data:application/octet-stream;base64,' . $enc_img;
1266
1267 // 画像情報を取得
1268 $image_info = getimagesize($image_url);
1269 // 画像情報から画像のサイズを取得
1270 $width = (int) $image_info[0];
1271 $height = (int) $image_info[1];
1272 // 画像タイプを取得
1273 $image_type = $image_info['mime'];
1274 // アスペクト比(縦横比を取得)
1275 $aspect_ratio = $height / $width;
1276
1277 // リサイズ後の幅を定義
1278 $new_width = 1000;
1279 // リサイズ後の高さを定義(アスペクト比を維持して定義)
1280 $new_height = 1000 * $aspect_ratio;
1281
1282 // 画像タイプがPNGか、JPEGであることを確認
1283 if ($image_type === 'image/png' || $image_type === 'image/jpeg') {
1284 // 画像タイプがPNGの場合の処理
1285 if ($image_type === 'image/png') {
1286 // 元の画像から新しい画像を作る準備
1287 $baseImage = imagecreatefrompng($image_url);
1288 // 画像タイプがJPEGの場合の処理
1289 } elseif ($image_type === 'image/jpeg') {
1290 // 元の画像から新しい画像を作る準備
1291 $baseImage = imagecreatefromjpeg($image_url);
1292 }
1293 // サイズを指定して新しい画像のキャンバスを作成
1294 $image = imagecreatetruecolor($new_width, $new_height);
1295 // 画像のコピーと伸縮
1296 imagecopyresampled($image, $baseImage, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
1297 // コピーした画像を出力
1298 imagejpeg($image , $tmp_file);
1299 }
1300 }
1301
1241 1302
1242 // Check total file size limit 1303 // Check total file size limit
1243 if (!empty($upload['total_size'])) { 1304 if (!empty($upload['total_size'])) {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!