diff --git a/modules/file/file.admin.controller.php b/modules/file/file.admin.controller.php index 8e2fbe3ee..01851a752 100644 --- a/modules/file/file.admin.controller.php +++ b/modules/file/file.admin.controller.php @@ -69,8 +69,10 @@ class fileAdminController extends file $config->max_image_width = intval(Context::get('max_image_width')) ?: ''; $config->max_image_height = intval(Context::get('max_image_height')) ?: ''; $config->max_image_size_action = Context::get('max_image_size_action') ?: ''; + $config->max_image_size_quality = max(50, min(100, intval(Context::get('max_image_size_quality')))); $config->image_autoconv['bmp2jpg'] = Context::get('image_autoconv_bmp2jpg') === 'Y' ? true : false; $config->image_autoconv['webp2jpg'] = Context::get('image_autoconv_webp2jpg') === 'Y' ? true : false; + $config->image_autoconv_quality = max(50, min(100, intval(Context::get('image_autoconv_quality')))); // Check maximum file size if (PHP_INT_SIZE < 8) diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index 8c78ccf1c..1848a6f1c 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -1045,11 +1045,11 @@ class fileController extends file // Check image type if($config->image_autoconv['bmp2jpg'] && function_exists('imagebmp') && $image_type === 6) { - $convert = array($image_width, $image_height, 'jpg'); + $convert = array($image_width, $image_height, 'jpg', $config->image_autoconv_quality ?: 75); } if($config->image_autoconv['webp2jpg'] && function_exists('imagewebp') && $image_type === 18) { - $convert = array($image_width, $image_height, 'jpg'); + $convert = array($image_width, $image_height, 'jpg', $config->image_autoconv_quality ?: 75); } // Check image size @@ -1102,7 +1102,7 @@ class fileController extends file $resize_height = $config->max_image_height; } $target_type = in_array($image_type, array(6, 8, 18)) ? 'jpg' : $file_info['extension']; - $convert = array(intval($resize_width), intval($resize_height), $target_type); + $convert = array(intval($resize_width), intval($resize_height), $target_type, $config->max_image_size_quality ?: 75); } } } @@ -1110,8 +1110,7 @@ class fileController extends file // Convert image if necessary if ($convert) { - $quality = 75; - $result = FileHandler::createImageFile($file_info['tmp_name'], $file_info['tmp_name'] . '.conv', $convert[0], $convert[1], $convert[2], 'crop', $quality); + $result = FileHandler::createImageFile($file_info['tmp_name'], $file_info['tmp_name'] . '.conv', $convert[0], $convert[1], $convert[2], 'crop', $convert[3]); if ($result) { $file_info['name'] = preg_replace('/\.' . preg_quote($file_info['extension'], '/') . '$/i', '.' . $convert[2], $file_info['name']); diff --git a/modules/file/file.model.php b/modules/file/file.model.php index 888bf08a1..3652cf18f 100644 --- a/modules/file/file.model.php +++ b/modules/file/file.model.php @@ -192,7 +192,9 @@ class fileModel extends file $config->max_image_width = $file_config->max_image_width; $config->max_image_height = $file_config->max_image_height; $config->max_image_size_action = $file_config->max_image_size_action; + $config->max_image_size_quality = $file_config->max_image_size_quality; $config->image_autoconv = $file_config->image_autoconv; + $config->image_autoconv_quality = $file_config->image_autoconv_quality; $config->download_grant = $file_config->download_grant; $config->allow_outlink = $file_config->allow_outlink; $config->allow_outlink_site = $file_config->allow_outlink_site; @@ -210,7 +212,9 @@ class fileModel extends file if(!$config->max_image_width) $config->max_image_width = $file_module_config->max_image_width; if(!$config->max_image_height) $config->max_image_height = $file_module_config->max_image_height; if(!$config->max_image_size_action) $config->max_image_size_action = $file_module_config->max_image_size_action; + if(!$config->max_image_size_quality) $config->max_image_size_quality = $file_module_config->max_image_size_quality; if(!$config->image_autoconv) $config->image_autoconv = $file_module_config->image_autoconv; + if(!$config->image_autoconv_quality) $config->image_autoconv_quality = $file_module_config->image_autoconv_quality; // Default setting if not exists if(!$config->allowed_filesize) $config->allowed_filesize = '2'; @@ -219,7 +223,9 @@ class fileModel extends file if(!$config->allow_outlink) $config->allow_outlink = 'Y'; if(!$config->download_grant) $config->download_grant = array(); if(!$config->inline_download_format) $config->inline_download_format = array(); + if(!$config->max_image_size_quality) $config->max_image_size_quality = 75; if(!$config->image_autoconv) $config->image_autoconv = array(); + if(!$config->image_autoconv_quality) $config->image_autoconv_quality = 75; return $config; } diff --git a/modules/file/lang/en.php b/modules/file/lang/en.php index 67f86b890..430ec89e3 100644 --- a/modules/file/lang/en.php +++ b/modules/file/lang/en.php @@ -21,6 +21,7 @@ $lang->max_image_size = 'Maximum Image Size'; $lang->max_image_size_action_nothing = 'If exceeded, do nothing'; $lang->max_image_size_action_block = 'If exceeded, block upload'; $lang->max_image_size_action_resize = 'If exceeded, resize automatically'; +$lang->image_resize_quality = 'Quality'; $lang->image_autoconv = 'Auto-Convert Image'; $lang->image_autoconv_bmp2jpg = 'BMP → JPG'; $lang->image_autoconv_webp2jpg = 'WebP → JPG'; diff --git a/modules/file/lang/ko.php b/modules/file/lang/ko.php index f692b6578..060db37b9 100644 --- a/modules/file/lang/ko.php +++ b/modules/file/lang/ko.php @@ -21,6 +21,7 @@ $lang->max_image_size = '이미지 크기 제한'; $lang->max_image_size_action_nothing = '초과시 아무 것도 하지 않음'; $lang->max_image_size_action_block = '초과시 업로드 금지'; $lang->max_image_size_action_resize = '초과시 자동 크기 조정'; +$lang->image_resize_quality = '화질'; $lang->image_autoconv = '이미지 자동 변환'; $lang->image_autoconv_bmp2jpg = 'BMP → JPG'; $lang->image_autoconv_webp2jpg = 'WebP → JPG'; diff --git a/modules/file/tpl/upload_config.html b/modules/file/tpl/upload_config.html index 29729c6e9..c2123462b 100644 --- a/modules/file/tpl/upload_config.html +++ b/modules/file/tpl/upload_config.html @@ -32,6 +32,12 @@ +

{$lang->about_max_image_size}

@@ -46,6 +52,12 @@ {$lang->image_autoconv_webp2jpg} +

{$lang->about_image_autoconv}