diff --git a/inc/config.php b/inc/config.php index 2cbecdc3..8d93f266 100644 --- a/inc/config.php +++ b/inc/config.php @@ -431,10 +431,10 @@ $config['spoiler_image'] = 'static/spoiler.png'; // Thumbnail quality (compression level), from 0 to 9 - $config['thumb_quality'] = 7; + $config['thumb_quality'] = 8; // When a thumbnailed image is going to be the same (in dimension), just copy the entire file and use that as a thumbnail instead of resizing/redrawing - $config['minimum_copy_resize'] = true; + $config['minimum_copy_resize'] = false; // Store image hash in the database for r9k-like boards implementation soon // Function name for hashing diff --git a/inc/image.php b/inc/image.php index e27364cb..7899ba99 100644 --- a/inc/image.php +++ b/inc/image.php @@ -57,6 +57,7 @@ class Image { $thumb = new $classname(false); $thumb->src = $this->src; + $thumb->format = $this->format; $thumb->original_width = $this->size->width; $thumb->original_height = $this->size->height; @@ -75,6 +76,7 @@ class Image { } $thumb->_resize($this->image->image, $width, $height); + return $thumb; } @@ -181,7 +183,7 @@ class ImageImagick extends ImageBase { public function resize() { global $config; - if (preg_match('/\.gif$/i', $this->src) && $config['thumb_ext'] == 'gif') { + if ($this->format == 'gif' && $config['thumb_ext'] == 'gif') { $this->image = new Imagick(); $this->image->setFormat('gif'); @@ -264,8 +266,15 @@ class ImageConvert extends ImageBase { $quality = $config['thumb_quality'] * 10; - if (shell_exec("convert -flatten -filter Point -scale {$this->width}x{$this->height} +antialias -quality {$quality} " . escapeshellarg($this->src . '[0]') . " " . escapeshellarg($this->temp)) || !file_exists($this->temp)) - error('Failed to resize image!'); + if ($this->format == 'gif' && $config['thumb_ext'] == 'gif' && $config['thumb_keep_animation_frames'] > 1) { + if (shell_exec("convert -filter Point -sample {$this->width}x{$this->height} +antialias -quality {$quality} " . + escapeshellarg($this->src . '') . " " . escapeshellarg($this->temp)) || !file_exists($this->temp)) + error('Failed to resize image!'); + } else { + if (shell_exec("convert -flatten -filter Point -scale {$this->width}x{$this->height} +antialias -quality {$quality} " . + escapeshellarg($this->src . '[0]') . " " . escapeshellarg($this->temp)) || !file_exists($this->temp)) + error('Failed to resize image!'); + } } }