イントロ画像登録時の画像リサイズ処理
Showing
1 changed file
with
63 additions
and
2 deletions
... | @@ -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'])) { | ... | ... |
-
Please register or sign in to post a comment