b36c9d9d by TaishiTokudome

画像リサイズ処理の修正

1 parent caeb56f3
......@@ -1173,24 +1173,13 @@ class WFFileBrowser extends JObject
// get uploaded file
$file = $app->input->files->get('file', array(), 'raw');
$file['size'] = 40;
// error_log("====================================================================================================================\n", 3, '/var/www/html/debug.log');
// error_log("outputed from " . __FILE__ . "\n", 3, '/var/www/html/debug.log');
// error_log('file = ', 3, '/var/www/html/debug.log');
// error_log(print_r($file, true) . "\n", 3, '/var/www/html/debug.log');
// error_log("====================================================================================================================\n", 3, '/var/www/html/debug.log');
// error_log("ここまで\n\n", 3, '/var/www/html/debug.log');
// validate file
$this->validateUploadedFile($file);
// get file name
$name = (string) $app->input->get('name', $file['name'], 'STRING');
// error_log("====================================================================================================================\n", 3, '/var/www/html/debug.log');
// error_log("outputed from " . __FILE__ . "\n", 3, '/var/www/html/debug.log');
// error_log('name = ', 3, '/var/www/html/debug.log');
// error_log(print_r($name, true) . "\n", 3, '/var/www/html/debug.log');
// error_log("====================================================================================================================\n", 3, '/var/www/html/debug.log');
// error_log("ここまで\n\n", 3, '/var/www/html/debug.log');
// decode
$name = rawurldecode($name);
......@@ -1255,51 +1244,69 @@ class WFFileBrowser extends JObject
$fieldid = (string) $app->input->get('fieldid', '', 'STRING');
// ファイルがイントロ画像としてアップロードされていることを確認
if ($fieldid === 'jform_images_image_intro') {
// tmpディレクトリに一時保存されているupload予定のファイルパスを取得
$tmp_file = $file['tmp_name'];
// 画像を取得
$img = file_get_contents($tmp_file);
// 画像のエンコード
$enc_img = base64_encode($img);
// 画像URLを作成
$image_url = 'data:application/octet-stream;base64,' . $enc_img;
// 画像情報を取得
$image_info = getimagesize($image_url);
// 画像情報から画像のサイズを取得
$image_info = getimagesize($tmp_file);
// 画像情報から画像のを取得
$width = (int) $image_info[0];
$height = (int) $image_info[1];
// 画像タイプを取得
$image_type = $image_info['mime'];
// アスペクト比(縦横比を取得)
$aspect_ratio = $height / $width;
// リサイズ後の幅を定義
$new_width = 1000;
// リサイズ後の高さを定義(アスペクト比を維持して定義)
$new_height = 1000 * $aspect_ratio;
// 画像タイプがPNGか、JPEGであることを確認
if ($image_type === 'image/png' || $image_type === 'image/jpeg') {
// 画像タイプがPNGの場合の処理
if ($image_type === 'image/png') {
// 元の画像から新しい画像を作る準備
$baseImage = imagecreatefrompng($image_url);
// 画像タイプがJPEGの場合の処理
} elseif ($image_type === 'image/jpeg') {
// 元の画像から新しい画像を作る準備
$baseImage = imagecreatefromjpeg($image_url);
// 登録する画像の幅がリサイズ後の幅(1000px)より大きいことを確認(1000px以上でリサイズ処理)
if ($width > $new_width) {
// 画像情報から画像の高さを取得
$height = (int) $image_info[1];
// 画像タイプを取得
$image_type = $image_info['mime'];
// アスペクト比(縦横比を取得)
$aspect_ratio = $height / $width;
// リサイズ後の高さを定義(アスペクト比を維持して定義)
$new_height = $new_width * $aspect_ratio;
$base_image = null;
switch ($image_type) {
// 画像タイプがPNGの場合の処理
case 'image/png':
// 元の画像から新しい画像を作る準備
$base_image = imagecreatefrompng($tmp_file);
break;
// 画像タイプがJPEGの場合の処理
case 'image/jpeg':
// 元の画像から新しい画像を作る準備
$base_image = imagecreatefromjpeg($tmp_file);
break;
default:
break;
}
// $base_imageがnullから更新されている場合を確認
if ($base_image) {
// サイズを指定して新しい画像のキャンバスを作成
$new_image = imagecreatetruecolor($new_width, $new_height);
// 画像のコピーと伸縮
imagecopyresampled($new_image, $base_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
switch ($image_type) {
// 画像タイプがPNGの場合の処理
case 'image/png':
// コピーした画像を出力
imagepng($new_image, $tmp_file);
break;
// 画像タイプがJPEGの場合の処理
case 'image/jpeg':
// コピーした画像を出力
imagejpeg($new_image, $tmp_file);
break;
default:
break;
}
}
// サイズを指定して新しい画像のキャンバスを作成
$image = imagecreatetruecolor($new_width, $new_height);
// 画像のコピーと伸縮
imagecopyresampled($image, $baseImage, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// コピーした画像を出力
imagejpeg($image , $tmp_file);
}
}
// Check total file size limit
if (!empty($upload['total_size'])) {
$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!