summaryrefslogtreecommitdiff
path: root/kohana/libraries/drivers/Image
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2008-12-29 23:25:28 +0000
committerBharat Mediratta <bharat@menalto.com>2008-12-29 23:25:28 +0000
commit4ab53d145bec440529a6304f470eb952a40eec6b (patch)
tree77c534b43cff4398c065f5eb2bdf140c3520b5db /kohana/libraries/drivers/Image
parent4439ca94a9850261d7f27d06c8327eafe0ff1ea3 (diff)
Create Image::composite() and implement it in GD, ImageMagick and GraphicsMagick drivers.
Diffstat (limited to 'kohana/libraries/drivers/Image')
-rw-r--r--kohana/libraries/drivers/Image/GD.php22
-rw-r--r--kohana/libraries/drivers/Image/GraphicsMagick.php10
-rw-r--r--kohana/libraries/drivers/Image/ImageMagick.php10
3 files changed, 42 insertions, 0 deletions
diff --git a/kohana/libraries/drivers/Image/GD.php b/kohana/libraries/drivers/Image/GD.php
index c3789b6d..24657c56 100644
--- a/kohana/libraries/drivers/Image/GD.php
+++ b/kohana/libraries/drivers/Image/GD.php
@@ -331,6 +331,28 @@ class Image_GD_Driver extends Image_Driver {
return imageconvolution($this->tmp_image, $matrix, $amount - 8, 0);
}
+ public function composite($properties)
+ {
+ switch($properties['mime'])
+ {
+ case "image/jpeg":
+ $overlay_img = imagecreatefromjpeg($properties['overlay_file']);
+ break;
+
+ case "image/gif":
+ $overlay_img = imagecreatefromgif($properties['overlay_file']);
+ break;
+
+ case "image/png":
+ $overlay_img = imagecreatefrompng($properties['overlay_file']);
+ break;
+ }
+
+ imagecopymerge($this->tmp_image, $overlay_img, $properties['x'], $properties['y'], 0, 0, imagesx($overlay_img), imagesy($overlay_img), $properties['transparency']);
+ imagedestroy($overlay_img);
+ return TRUE;
+ }
+
protected function properties()
{
return array(imagesx($this->tmp_image), imagesy($this->tmp_image));
diff --git a/kohana/libraries/drivers/Image/GraphicsMagick.php b/kohana/libraries/drivers/Image/GraphicsMagick.php
index 8840eb80..a8bc4d9b 100644
--- a/kohana/libraries/drivers/Image/GraphicsMagick.php
+++ b/kohana/libraries/drivers/Image/GraphicsMagick.php
@@ -203,6 +203,16 @@ class Image_GraphicsMagick_Driver extends Image_Driver {
return TRUE;
}
+ public function composite($properties)
+ {
+ if ($error = exec(escapeshellcmd($this->dir.'gm'.$this->ext.' composite').' -geometry ' . escapeshellarg('+'.$properties['x'].'+'.$properties['y']).' -dissolve '.escapeshellarg($properties['transparency']).' '.escapeshellarg($properties['overlay_file']).' '.$this->cmd_image.' '.$this->cmd_image))
+ {
+ $this->errors[] = $error;
+ return FALSE;
+ }
+ return TRUE;
+ }
+
protected function properties()
{
return array_slice(getimagesize($this->tmp_image), 0, 2, FALSE);
diff --git a/kohana/libraries/drivers/Image/ImageMagick.php b/kohana/libraries/drivers/Image/ImageMagick.php
index 3397e1d0..497dd8c4 100644
--- a/kohana/libraries/drivers/Image/ImageMagick.php
+++ b/kohana/libraries/drivers/Image/ImageMagick.php
@@ -204,6 +204,16 @@ class Image_ImageMagick_Driver extends Image_Driver {
return TRUE;
}
+ public function composite($properties)
+ {
+ if ($error = exec(escapeshellcmd($this->dir.'composite'.$this->ext).' -geometry ' . escapeshellarg('+'.$properties['x'].'+'.$properties['y']).' -dissolve '.escapeshellarg($properties['transparency']).' '.escapeshellarg($properties['overlay_file']).' '.$this->cmd_image.' '.$this->cmd_image))
+ {
+ $this->errors[] = $error;
+ return FALSE;
+ }
+ return TRUE;
+ }
+
protected function properties()
{
return array_slice(getimagesize($this->tmp_image), 0, 2, FALSE);