szurubooru/src/Services/ImageManipulation/ImagickImageManipulator.php
2014-10-18 18:48:26 +02:00

60 lines
1.2 KiB
PHP

<?php
namespace Szurubooru\Services\ImageManipulation;
class ImagickImageManipulator implements IImageManipulator
{
public function loadFromBuffer($source)
{
try
{
$image = new \Imagick();
$image->readImageBlob($source);
$image = $image->coalesceImages();
return $image;
}
catch (\Exception $e)
{
return null;
}
}
public function getImageWidth($imageResource)
{
return $imageResource->getImageWidth();
}
public function getImageHeight($imageResource)
{
return $imageResource->getImageHeight();
}
public function resizeImage(&$imageResource, $width, $height)
{
$imageResource->resizeImage($width, $height, \Imagick::FILTER_LANCZOS, 0.9);
}
public function cropImage(&$imageResource, $width, $height, $originX, $originY)
{
$imageResource->cropImage($width, $height, $originX, $originY);
$imageResource->setImagePage(0, 0, 0, 0);
}
public function saveToBuffer($imageResource, $format)
{
switch ($format)
{
case self::FORMAT_JPEG:
$imageResource->setImageFormat('jpeg');
break;
case self::FORMAT_PNG:
$imageResource->setImageFormat('png');
break;
default:
throw new \InvalidArgumentException('Not supported');
}
return $imageResource->getImageBlob();
}
}