From 04e3288d24996fda9de26226fc5809dceb6e417e Mon Sep 17 00:00:00 2001 From: Thomas Schlage Date: Tue, 27 Aug 2013 17:08:53 +0200 Subject: [PATCH] Added setTransparentColor to ImageAdapter classes --- .../lib/system/image/adapter/GDImageAdapter.class.php | 10 ++++++++++ .../lib/system/image/adapter/IImageAdapter.class.php | 9 +++++++++ .../lib/system/image/adapter/ImageAdapter.class.php | 7 +++++++ .../system/image/adapter/ImagickImageAdapter.class.php | 9 ++++++++- 4 files changed, 34 insertions(+), 1 deletion(-) 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 9f478fa332..8ebc1166fa 100644 --- a/wcfsetup/install/files/lib/system/image/adapter/GDImageAdapter.class.php +++ b/wcfsetup/install/files/lib/system/image/adapter/GDImageAdapter.class.php @@ -204,6 +204,16 @@ class GDImageAdapter implements IImageAdapter { return ($this->color !== null); } + /** + * @see wcf\system\image\adapter\IImageAdapter::setTransparentColor() + */ + public function setTransparentColor($red, $green, $blue) { + if ($this->type == IMAGETYPE_PNG) { + $color = imagecolorallocate($this->image, $red, $green, $blue); + imageColorTransparent($this->image, $color); + } + } + /** * @see wcf\system\image\adapter\IImageAdapter::writeImage() */ diff --git a/wcfsetup/install/files/lib/system/image/adapter/IImageAdapter.class.php b/wcfsetup/install/files/lib/system/image/adapter/IImageAdapter.class.php index 3aee7b2e62..c637f3f4b0 100644 --- a/wcfsetup/install/files/lib/system/image/adapter/IImageAdapter.class.php +++ b/wcfsetup/install/files/lib/system/image/adapter/IImageAdapter.class.php @@ -110,6 +110,15 @@ interface IImageAdapter { */ public function hasColor(); + /** + * Sets a color to be transparent with alpha 0. + * + * @param integer $red + * @param integer $green + * @param integer $blue + */ + public function setTransparentColor($red, $green, $blue); + /** * Writes an image to disk. * diff --git a/wcfsetup/install/files/lib/system/image/adapter/ImageAdapter.class.php b/wcfsetup/install/files/lib/system/image/adapter/ImageAdapter.class.php index c6e59e30e6..a1dcf326fb 100644 --- a/wcfsetup/install/files/lib/system/image/adapter/ImageAdapter.class.php +++ b/wcfsetup/install/files/lib/system/image/adapter/ImageAdapter.class.php @@ -134,6 +134,13 @@ class ImageAdapter implements IImageAdapter { return $this->adapter->hasColor(); } + /** + * @see wcf\system\image\adapter\IImageAdapter::setTransparentColor() + */ + public function setTransparentColor($red, $green, $blue) { + $this->adapter->setTransparentColor($red, $green, $blue); + } + /** * @see wcf\system\image\adapter\IImageAdapter::writeImage() */ 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 f9700599a6..53f4c6899f 100644 --- a/wcfsetup/install/files/lib/system/image/adapter/ImagickImageAdapter.class.php +++ b/wcfsetup/install/files/lib/system/image/adapter/ImagickImageAdapter.class.php @@ -134,7 +134,6 @@ class ImagickImageAdapter implements IImageAdapter { public function setColor($red, $green, $blue) { $this->color = new \ImagickPixel(); $this->color->setColor('rgb('.$red.','.$green.','.$blue.')'); - } /** @@ -148,6 +147,14 @@ class ImagickImageAdapter implements IImageAdapter { return false; } + /** + * @see wcf\system\image\adapter\IImageAdapter::setTransparentColor() + */ + public function setTransparentColor($red, $green, $blue) { + $color = 'rgb(' . $red . ',' . $green . ',' . $blue . ')'; + $this->imagick->paintTransparentImage($color, 0.0, 0); + } + /** * @see wcf\system\image\adapter\IImageAdapter::getImage() */ -- 2.20.1