|
|
@ -77,11 +77,11 @@ class Image extends Component |
|
|
|
private $_imagine; |
|
|
|
private $_imagine; |
|
|
|
/** |
|
|
|
/** |
|
|
|
* @var string the driver to use. These can be: |
|
|
|
* @var string the driver to use. These can be: |
|
|
|
* - gd2 |
|
|
|
* - [[DRIVER_GD2]] |
|
|
|
* - imagick |
|
|
|
* - [[DRIVER_IMAGICK]] |
|
|
|
* - gmagick |
|
|
|
* - [[DRIVER_GMAGICK]] |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private $_driver = "gd2"; |
|
|
|
private $_driver = self::DRIVER_GD2; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Sets the driver. |
|
|
|
* Sets the driver. |
|
|
@ -94,7 +94,7 @@ class Image extends Component |
|
|
|
throw new InvalidConfigException( |
|
|
|
throw new InvalidConfigException( |
|
|
|
strtr('"{class}::driver" should be string of these possible options "{drivers}", "{driver}" given.', [ |
|
|
|
strtr('"{class}::driver" should be string of these possible options "{drivers}", "{driver}" given.', [ |
|
|
|
'{class}' => get_class($this), |
|
|
|
'{class}' => get_class($this), |
|
|
|
'{drivers}' => implode(', ', $this->getAvailableDrivers()), |
|
|
|
'{drivers}' => implode('", "', $this->getAvailableDrivers()), |
|
|
|
'{driver}' => $driver |
|
|
|
'{driver}' => $driver |
|
|
|
])); |
|
|
|
])); |
|
|
|
} |
|
|
|
} |
|
|
@ -148,16 +148,36 @@ class Image extends Component |
|
|
|
* @param string $filename the full path to the image file |
|
|
|
* @param string $filename the full path to the image file |
|
|
|
* @param integer $width the crop width |
|
|
|
* @param integer $width the crop width |
|
|
|
* @param integer $height the crop height |
|
|
|
* @param integer $height the crop height |
|
|
|
* @param integer $x position on image to crop from. Defaults to 0. |
|
|
|
* @param mixed $point. This argument can be both an array or an \Imagine\Image\Point type class, containing both |
|
|
|
* @param integer $y position on image to crop from. Defaults to 0. |
|
|
|
* `x` and `y` coordinates. For example: |
|
|
|
|
|
|
|
* ~~~ |
|
|
|
|
|
|
|
* // as array |
|
|
|
|
|
|
|
* $obj->crop('path\to\image.jpg', 200, 200, [5, 5]); |
|
|
|
|
|
|
|
* // as \Imagine\Image\Point |
|
|
|
|
|
|
|
* $point = new \Imagine\Image\Point(5, 5); |
|
|
|
|
|
|
|
* $obj->crop('path\to\image.jpg', 200, 200, $point); |
|
|
|
|
|
|
|
* ~~~ |
|
|
|
* @return \Imagine\Image\ManipulatorInterface |
|
|
|
* @return \Imagine\Image\ManipulatorInterface |
|
|
|
|
|
|
|
* @throws \InvalidArgumentException |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function crop($filename, $width, $height, $x = 0, $y = 0) |
|
|
|
public function crop($filename, $width, $height, $point = null) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
if(is_array($point)) { |
|
|
|
|
|
|
|
list($x, $y) = $point; |
|
|
|
|
|
|
|
$point = new Point($x, $y); |
|
|
|
|
|
|
|
} elseif ($point === null) { |
|
|
|
|
|
|
|
$point = new Point(0, 0); |
|
|
|
|
|
|
|
} elseif (!$point instanceof Point ) { |
|
|
|
|
|
|
|
throw new \InvalidArgumentException( |
|
|
|
|
|
|
|
strtr('"{class}::crop()" "$point" if not null, should be an "array" or a "{type}" class type, containing both "x" and "y" coordinates.', [ |
|
|
|
|
|
|
|
'{class}' => get_class($this), |
|
|
|
|
|
|
|
'{type}' => 'Imagine\\Image\\Point' |
|
|
|
|
|
|
|
])); |
|
|
|
|
|
|
|
} |
|
|
|
return $this->getImagine() |
|
|
|
return $this->getImagine() |
|
|
|
->open($filename) |
|
|
|
->open($filename) |
|
|
|
->copy() |
|
|
|
->copy() |
|
|
|
->crop(new Point($x, $y), new Box($width, $height)); |
|
|
|
->crop($point, new Box($width, $height)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
@ -207,11 +227,19 @@ class Image extends Component |
|
|
|
* Note: If any of `$x` or `$y` parameters are null, bottom right position will be default. |
|
|
|
* Note: If any of `$x` or `$y` parameters are null, bottom right position will be default. |
|
|
|
* @param string $filename the full path to the image file to apply the watermark to |
|
|
|
* @param string $filename the full path to the image file to apply the watermark to |
|
|
|
* @param string $watermarkFilename the full path to the image file to apply as watermark |
|
|
|
* @param string $watermarkFilename the full path to the image file to apply as watermark |
|
|
|
* @param integer $x position on image to apply watermark. Defaults to null. |
|
|
|
* @param mixed $point. This argument can be both an array or an \Imagine\Image\Point type class, containing both |
|
|
|
* @param integer $y position on image to apply watermark. Defaults to null |
|
|
|
* `x` and `y` coordinates. For example: |
|
|
|
|
|
|
|
* ~~~ |
|
|
|
|
|
|
|
* // as array |
|
|
|
|
|
|
|
* $obj->watermark('path\to\image.jpg', 'path\to\watermark.jpg', [5, 5]); |
|
|
|
|
|
|
|
* // as \Imagine\Image\Point |
|
|
|
|
|
|
|
* $point = new \Imagine\Image\Point(5, 5); |
|
|
|
|
|
|
|
* $obj->watermark('path\to\image.jpg', 'path\to\watermark.jpg', $point); |
|
|
|
|
|
|
|
* ~~~ |
|
|
|
* @return ManipulatorInterface |
|
|
|
* @return ManipulatorInterface |
|
|
|
|
|
|
|
* @throws \InvalidArgumentException |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function watermark($filename, $watermarkFilename, $x = null, $y = null) |
|
|
|
public function watermark($filename, $watermarkFilename, $point = null) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$img = $this->getImagine()->open($filename); |
|
|
|
$img = $this->getImagine()->open($filename); |
|
|
|
$watermark = $this->getImagine()->open($watermarkFilename); |
|
|
|
$watermark = $this->getImagine()->open($watermarkFilename); |
|
|
@ -220,11 +248,22 @@ class Image extends Component |
|
|
|
$wSize = $watermark->getSize(); |
|
|
|
$wSize = $watermark->getSize(); |
|
|
|
|
|
|
|
|
|
|
|
// if x or y position was not given, set its bottom right by default |
|
|
|
// if x or y position was not given, set its bottom right by default |
|
|
|
$pos = $x === null || $y === null |
|
|
|
if(is_array($point)) { |
|
|
|
? new Point($size->getWidth() - $wSize->getWidth() , $size->getHeight() - $wSize->getHeight()) |
|
|
|
list($x, $y) = $point; |
|
|
|
: new Point($x, $y); |
|
|
|
$point = new Point($x, $y); |
|
|
|
|
|
|
|
} elseif ($point === null) { |
|
|
|
|
|
|
|
$x = $size->getWidth() - $wSize->getWidth(); |
|
|
|
|
|
|
|
$y = $size->getHeight() - $wSize->getHeight(); |
|
|
|
|
|
|
|
$point = new Point($x, $y); |
|
|
|
|
|
|
|
} elseif (!$point instanceof Point) { |
|
|
|
|
|
|
|
throw new \InvalidArgumentException( |
|
|
|
|
|
|
|
strtr('"{class}::watermark()" "$point" if not null, should be an "array" or a "{type}" class type, containing both "x" and "y" coordinates.', [ |
|
|
|
|
|
|
|
'{class}' => get_class($this), |
|
|
|
|
|
|
|
'{type}' => 'Imagine\\Image\\Point' |
|
|
|
|
|
|
|
])); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return $img->paste($watermark, $pos); |
|
|
|
return $img->paste($watermark, $point); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|