From f7ac2ad1e3262e16bad0d712eb65c56e34bd4289 Mon Sep 17 00:00:00 2001 From: Marcel Werk Date: Mon, 16 Apr 2012 20:36:12 +0200 Subject: [PATCH] Fixed crop calculation --- .../image/adapter/GDImageAdapter.class.php | 16 +++++++++------- .../image/adapter/ImagickImageAdapter.class.php | 1 + 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/wcfsetup/install/files/lib/system/image/adapter/GDImageAdapter.class.php b/wcfsetup/install/files/lib/system/image/adapter/GDImageAdapter.class.php index 306838f0f3..71bfb26b69 100644 --- a/wcfsetup/install/files/lib/system/image/adapter/GDImageAdapter.class.php +++ b/wcfsetup/install/files/lib/system/image/adapter/GDImageAdapter.class.php @@ -113,18 +113,20 @@ class GDImageAdapter implements IImageAdapter { $height = $maxHeight; $width = round($this->width * ($height / $this->height)); } - } else { - $width = $height = $maxWidth; + $width = $maxWidth; + $height = $maxHeight; - if ($sourceWidth > $sourceHeight) { - $x = ceil(($sourceWidth - $sourceHeight) / 2); - $sourceWidth = $sourceHeight; + if ($maxWidth / $this->width < $maxHeight / $this->height) { + $cut = (($sourceWidth * ($maxHeight / $this->height)) - $maxWidth) / ($maxHeight / $this->height); + $x = ceil($cut / 2); + $sourceWidth = $sourceWidth - $x * 2; } else { - $y = ceil(($sourceHeight - $sourceWidth) / 2); - $sourceHeight = $sourceWidth; + $cut = (($sourceHeight * ($maxWidth / $this->width)) - $maxHeight) / ($maxWidth / $this->width); + $y = ceil($cut / 2); + $sourceHeight = $sourceHeight - $y * 2; } } diff --git a/wcfsetup/install/files/lib/system/image/adapter/ImagickImageAdapter.class.php b/wcfsetup/install/files/lib/system/image/adapter/ImagickImageAdapter.class.php index 5bfecba4bf..71c6450d0d 100644 --- a/wcfsetup/install/files/lib/system/image/adapter/ImagickImageAdapter.class.php +++ b/wcfsetup/install/files/lib/system/image/adapter/ImagickImageAdapter.class.php @@ -82,6 +82,7 @@ class ImagickImageAdapter implements IImageAdapter { * @see wcf\system\image\adapter\IImageAdapter::createThumbnail() */ public function createThumbnail($maxWidth, $maxHeight, $obtainDimensions = true) { + /* todo: obtainDimensions=false doesn't work */ $thumbnail = $this->imagick; $thumbnail->cropThumbnailImage($maxWidth, $maxHeight); -- 2.20.1