b36c9d9d by TaishiTokudome

画像リサイズ処理の修正

1 parent caeb56f3
...@@ -1173,24 +1173,13 @@ class WFFileBrowser extends JObject ...@@ -1173,24 +1173,13 @@ 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 $file['size'] = 40; 1176
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');
1183 // validate file 1177 // validate file
1184 $this->validateUploadedFile($file); 1178 $this->validateUploadedFile($file);
1185 1179
1186 // get file name 1180 // get file name
1187 $name = (string) $app->input->get('name', $file['name'], 'STRING'); 1181 $name = (string) $app->input->get('name', $file['name'], 'STRING');
1188 // error_log("====================================================================================================================\n", 3, '/var/www/html/debug.log'); 1182
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');
1194 // decode 1183 // decode
1195 $name = rawurldecode($name); 1184 $name = rawurldecode($name);
1196 1185
...@@ -1255,51 +1244,69 @@ class WFFileBrowser extends JObject ...@@ -1255,51 +1244,69 @@ class WFFileBrowser extends JObject
1255 $fieldid = (string) $app->input->get('fieldid', '', 'STRING'); 1244 $fieldid = (string) $app->input->get('fieldid', '', 'STRING');
1256 // ファイルがイントロ画像としてアップロードされていることを確認 1245 // ファイルがイントロ画像としてアップロードされていることを確認
1257 if ($fieldid === 'jform_images_image_intro') { 1246 if ($fieldid === 'jform_images_image_intro') {
1247
1258 // tmpディレクトリに一時保存されているupload予定のファイルパスを取得 1248 // tmpディレクトリに一時保存されているupload予定のファイルパスを取得
1259 $tmp_file = $file['tmp_name']; 1249 $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 1250
1267 // 画像情報を取得 1251 // 画像情報を取得
1268 $image_info = getimagesize($image_url); 1252 $image_info = getimagesize($tmp_file);
1269 // 画像情報から画像のサイズを取得 1253 // 画像情報から画像のを取得
1270 $width = (int) $image_info[0]; 1254 $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 // リサイズ後の幅を定義 1255 // リサイズ後の幅を定義
1278 $new_width = 1000; 1256 $new_width = 1000;
1279 // リサイズ後の高さを定義(アスペクト比を維持して定義) 1257
1280 $new_height = 1000 * $aspect_ratio; 1258 // 登録する画像の幅がリサイズ後の幅(1000px)より大きいことを確認(1000px以上でリサイズ処理)
1281 1259 if ($width > $new_width) {
1282 // 画像タイプがPNGか、JPEGであることを確認 1260
1283 if ($image_type === 'image/png' || $image_type === 'image/jpeg') { 1261 // 画像情報から画像の高さを取得
1284 // 画像タイプがPNGの場合の処理 1262 $height = (int) $image_info[1];
1285 if ($image_type === 'image/png') { 1263 // 画像タイプを取得
1286 // 元の画像から新しい画像を作る準備 1264 $image_type = $image_info['mime'];
1287 $baseImage = imagecreatefrompng($image_url); 1265 // アスペクト比(縦横比を取得)
1288 // 画像タイプがJPEGの場合の処理 1266 $aspect_ratio = $height / $width;
1289 } elseif ($image_type === 'image/jpeg') { 1267 // リサイズ後の高さを定義(アスペクト比を維持して定義)
1290 // 元の画像から新しい画像を作る準備 1268 $new_height = $new_width * $aspect_ratio;
1291 $baseImage = imagecreatefromjpeg($image_url); 1269
1270 $base_image = null;
1271 switch ($image_type) {
1272 // 画像タイプがPNGの場合の処理
1273 case 'image/png':
1274 // 元の画像から新しい画像を作る準備
1275 $base_image = imagecreatefrompng($tmp_file);
1276 break;
1277 // 画像タイプがJPEGの場合の処理
1278 case 'image/jpeg':
1279 // 元の画像から新しい画像を作る準備
1280 $base_image = imagecreatefromjpeg($tmp_file);
1281 break;
1282 default:
1283 break;
1284 }
1285
1286 // $base_imageがnullから更新されている場合を確認
1287 if ($base_image) {
1288 // サイズを指定して新しい画像のキャンバスを作成
1289 $new_image = imagecreatetruecolor($new_width, $new_height);
1290 // 画像のコピーと伸縮
1291 imagecopyresampled($new_image, $base_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
1292 switch ($image_type) {
1293 // 画像タイプがPNGの場合の処理
1294 case 'image/png':
1295 // コピーした画像を出力
1296 imagepng($new_image, $tmp_file);
1297 break;
1298 // 画像タイプがJPEGの場合の処理
1299 case 'image/jpeg':
1300 // コピーした画像を出力
1301 imagejpeg($new_image, $tmp_file);
1302 break;
1303 default:
1304 break;
1305 }
1292 } 1306 }
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 } 1307 }
1300 } 1308 }
1301 1309
1302
1303 // Check total file size limit 1310 // Check total file size limit
1304 if (!empty($upload['total_size'])) { 1311 if (!empty($upload['total_size'])) {
1305 $size = $filesystem->getTotalSize($dir); 1312 $size = $filesystem->getTotalSize($dir);
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!