From 49cb6f723387674f256b0e9690ff26cb374283e7 Mon Sep 17 00:00:00 2001 From: Matthew Barbour Date: Wed, 5 Jun 2019 20:09:03 -0500 Subject: [PATCH] Added thumb_scaling option for generating high-dpi thumbnails --- ext/et/main.php | 1 + ext/et/theme.php | 1 + ext/handle_ico/main.php | 6 ++++-- ext/handle_pixel/main.php | 28 +++++++++------------------- ext/handle_video/main.php | 2 +- ext/image/main.php | 7 ++++++- 6 files changed, 22 insertions(+), 23 deletions(-) diff --git a/ext/et/main.php b/ext/et/main.php index c56c0f4d..7f8efe3d 100644 --- a/ext/et/main.php +++ b/ext/et/main.php @@ -57,6 +57,7 @@ class ET extends Extension $info['thumb_quality'] = $config->get_int('thumb_quality'); $info['thumb_width'] = $config->get_int('thumb_width'); $info['thumb_height'] = $config->get_int('thumb_height'); + $info['thumb_scaling'] = $config->get_int('thumb_scaling'); $info['thumb_mem'] = $config->get_int("thumb_mem_limit"); $info['stat_images'] = $database->get_one("SELECT COUNT(*) FROM images"); diff --git a/ext/et/theme.php b/ext/et/theme.php index f23ea296..a4b60ca9 100644 --- a/ext/et/theme.php +++ b/ext/et/theme.php @@ -41,6 +41,7 @@ Memory: {$info['thumb_mem']} Quality: {$info['thumb_quality']} Width: {$info['thumb_width']} Height: {$info['thumb_height']} +Scaling: {$info['thumb_scaling']} Shimmie stats: Images: {$info['stat_images']} diff --git a/ext/handle_ico/main.php b/ext/handle_ico/main.php index 504b09e1..5a52cda5 100644 --- a/ext/handle_ico/main.php +++ b/ext/handle_ico/main.php @@ -88,8 +88,10 @@ class IcoFileHandler extends Extension $inname = warehouse_path("images", $hash); $outname = warehouse_path("thumbs", $hash); - $w = $config->get_int("thumb_width"); - $h = $config->get_int("thumb_height"); + $tsize = get_thumbnail_size_scaled($width, $height); + $w = $tsize[0]; + $h = $tsise[1]; + $q = $config->get_int("thumb_quality"); $mem = $config->get_int("thumb_mem_limit") / 1024 / 1024; // IM takes memory in MB diff --git a/ext/handle_pixel/main.php b/ext/handle_pixel/main.php index 6d196910..fd74d517 100644 --- a/ext/handle_pixel/main.php +++ b/ext/handle_pixel/main.php @@ -103,8 +103,6 @@ class PixelFileHandler extends DataHandlerExtension { global $config; - $w = $config->get_int("thumb_width"); - $h = $config->get_int("thumb_height"); $q = $config->get_int("thumb_quality"); $convert = $config->get_string("thumb_convert_path"); @@ -114,12 +112,10 @@ class PixelFileHandler extends DataHandlerExtension //$size = shell_exec($cmd); //$size = explode(" ", trim($size)); $size = getimagesize($inname); - if ($size[0] > $size[1]*5) { - $size[0] = $size[1]*5; - } - if ($size[1] > $size[0]*5) { - $size[1] = $size[0]*5; - } + $tsize = get_thumbnail_size_scaled($size[0] , $size[1]); + $w = $tsize[0]; + $h = $tsize[1]; + // running the call with cmd.exe requires quoting for our paths $format = '"%s" "%s[0]" -extent %ux%u -flatten -strip -thumbnail %ux%u -quality %u jpg:"%s"'; @@ -158,24 +154,18 @@ class PixelFileHandler extends DataHandlerExtension $memory_limit = get_memory_limit(); if ($memory_use > $memory_limit) { - $w = $config->get_int('thumb_width'); - $h = $config->get_int('thumb_height'); - $thumb = imagecreatetruecolor($w, min($h, 64)); + $tsize = get_thumbnail_size_scaled($width, $height); + $w = $tsize[0]; + $h = $tsize[1]; + $thumb = imagecreatetruecolor($w, min($h, 64)); $white = imagecolorallocate($thumb, 255, 255, 255); $black = imagecolorallocate($thumb, 0, 0, 0); imagefill($thumb, 0, 0, $white); imagestring($thumb, 5, 10, 24, "Image Too Large :(", $black); return $thumb; } else { - if ($width > $height*5) { - $width = $height*5; - } - if ($height > $width*5) { - $height = $width*5; - } - $image = imagecreatefromstring(file_get_contents($tmpname)); - $tsize = get_thumbnail_size($width, $height); + $tsize = get_thumbnail_size_scaled($width, $height); $thumb = imagecreatetruecolor($tsize[0], $tsize[1]); imagecopyresampled( diff --git a/ext/handle_video/main.php b/ext/handle_video/main.php index 683ced7e..9a17735d 100644 --- a/ext/handle_video/main.php +++ b/ext/handle_video/main.php @@ -64,7 +64,7 @@ class VideoFileHandler extends DataHandlerExtension $outname = warehouse_path("thumbs", $hash); $orig_size = $this->video_size($inname); - $scaled_size = get_thumbnail_size($orig_size[0], $orig_size[1]); + $scaled_size = get_thumbnail_size_scaled($orig_size[0], $orig_size[1]); $cmd = escapeshellcmd(implode(" ", [ escapeshellarg($ffmpeg), "-y", "-i", escapeshellarg($inname), diff --git a/ext/image/main.php b/ext/image/main.php index 116ae5db..ef11be8f 100644 --- a/ext/image/main.php +++ b/ext/image/main.php @@ -19,6 +19,7 @@ class ImageIO extends Extension global $config; $config->set_default_int('thumb_width', 192); $config->set_default_int('thumb_height', 192); + $config->set_default_int('thumb_scaling', 100); $config->set_default_int('thumb_quality', 75); $config->set_default_int('thumb_mem_limit', parse_shorthand_int('8MB')); $config->set_default_string('thumb_convert_path', 'convert'); @@ -147,7 +148,11 @@ class ImageIO extends Extension $sb->add_label(" px at "); $sb->add_int_option("thumb_quality"); $sb->add_label(" % quality "); - + + $sb->add_label("
High-DPI scaling "); + $sb->add_int_option("thumb_scaling"); + $sb->add_label("%"); + if ($config->get_string("thumb_engine") == "convert") { $sb->add_label("
ImageMagick Binary: "); $sb->add_text_option("thumb_convert_path");