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");