This repository has been archived on 2025-02-26. You can view files and clone it, but cannot push or open issues or pull requests.
szurubooru/src/Services/ImageManipulation/ImageManipulator.php
Marcin Kurczewski 632bac8661 Added "use ..." statements
This version ditches backwards compatibility with PHP earlier than 5.6.
2014-10-18 18:48:36 +02:00

57 lines
1.4 KiB
PHP

<?php
namespace Szurubooru\Services\ImageManipulation;
use Szurubooru\Services\ImageManipulation\GdImageManipulator;
use Szurubooru\Services\ImageManipulation\ImagickImageManipulator;
class ImageManipulator implements IImageManipulator
{
private $strategy;
public function __construct(
ImagickImageManipulator $imagickImageManipulator,
GdImageManipulator $gdImageManipulator)
{
if (extension_loaded('imagick'))
{
$this->strategy = $imagickImageManipulator;
}
else if (extension_loaded('gd'))
{
$this->strategy = $gdImageManipulator;
}
else
{
throw new \RuntimeException('Neither imagick or gd image extensions are enabled');
}
}
public function loadFromBuffer($source)
{
return $this->strategy->loadFromBuffer($source);
}
public function getImageWidth($imageResource)
{
return $this->strategy->getImageWidth($imageResource);
}
public function getImageHeight($imageResource)
{
return $this->strategy->getImageHeight($imageResource);
}
public function resizeImage(&$imageResource, $width, $height)
{
return $this->strategy->resizeImage($imageResource, $width, $height);
}
public function cropImage(&$imageResource, $width, $height, $originX, $originY)
{
return $this->strategy->cropImage($imageResource, $width, $height, $originX, $originY);
}
public function saveToBuffer($source, $format)
{
return $this->strategy->saveToBuffer($source, $format);
}
}