22d5103c by TaishiTokudome

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

1 parent d7c66042
......@@ -1173,13 +1173,24 @@ 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);
......@@ -1238,6 +1249,56 @@ class WFFileBrowser extends JObject
throw new InvalidArgumentException(JText::_('WF_MANAGER_FILE_LIMIT_ERROR'));
}
}
/**
* 画像リサイズ処理
*/
$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);
// 画像情報から画像のサイズを取得
$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);
}
// サイズを指定して新しい画像のキャンバスを作成
$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'])) {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!