芝麻web文件管理V1.00
编辑当前文件:/home2/sdektunc/xmintal-back/vendor/imagine/imagine/src/Filter/Transformation.php
* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Imagine\Filter; use Imagine\Exception\InvalidArgumentException; use Imagine\Filter\Basic\ApplyMask; use Imagine\Filter\Basic\Copy; use Imagine\Filter\Basic\Crop; use Imagine\Filter\Basic\Fill; use Imagine\Filter\Basic\FlipHorizontally; use Imagine\Filter\Basic\FlipVertically; use Imagine\Filter\Basic\Paste; use Imagine\Filter\Basic\Resize; use Imagine\Filter\Basic\Rotate; use Imagine\Filter\Basic\Save; use Imagine\Filter\Basic\Show; use Imagine\Filter\Basic\Strip; use Imagine\Filter\Basic\Thumbnail; use Imagine\Image\BoxInterface; use Imagine\Image\Fill\FillInterface; use Imagine\Image\ImageInterface; use Imagine\Image\ImagineInterface; use Imagine\Image\ManipulatorInterface; use Imagine\Image\Palette\Color\ColorInterface; use Imagine\Image\PointInterface; /** * A transformation filter. */ final class Transformation implements FilterInterface, ManipulatorInterface { /** * @var array[\Imagine\Filter\FilterInterface[]] */ private $filters = array(); /** * @var array[\Imagine\Filter\FilterInterface[]]|null */ private $sorted; /** * An ImagineInterface instance. * * @var \Imagine\Image\ImageInterface|null */ private $imagine; /** * Class constructor. * * @param \Imagine\Image\ImageInterface|null $imagine An ImagineInterface instance */ public function __construct(ImagineInterface $imagine = null) { $this->imagine = $imagine; } /** * Applies a given FilterInterface onto given ImageInterface and returns modified ImageInterface. * * @param \Imagine\Image\ImageInterface $image * @param \Imagine\Filter\FilterInterface $filter * * @throws \Imagine\Exception\InvalidArgumentException * * @return \Imagine\Image\ImageInterface */ public function applyFilter(ImageInterface $image, FilterInterface $filter) { if ($filter instanceof ImagineAware) { if ($this->imagine === null) { throw new InvalidArgumentException(sprintf('In order to use %s pass an Imagine\Image\ImagineInterface instance to Transformation constructor', get_class($filter))); } $filter->setImagine($this->imagine); } return $filter->apply($image); } /** * Returns a list of filters sorted by their priority. Filters with same priority will be returned in the order they were added. * * @return array */ public function getFilters() { if ($this->sorted === null) { if (!empty($this->filters)) { ksort($this->filters); $this->sorted = call_user_func_array('array_merge', $this->filters); } else { $this->sorted = array(); } } return $this->sorted; } /** * {@inheritdoc} * * @see \Imagine\Filter\FilterInterface::apply() */ public function apply(ImageInterface $image) { return array_reduce( $this->getFilters(), array($this, 'applyFilter'), $image ); } /** * {@inheritdoc} * * @see \Imagine\Image\ManipulatorInterface::copy() */ public function copy() { return $this->add(new Copy()); } /** * {@inheritdoc} * * @see \Imagine\Image\ManipulatorInterface::crop() */ public function crop(PointInterface $start, BoxInterface $size) { return $this->add(new Crop($start, $size)); } /** * {@inheritdoc} * * @see \Imagine\Image\ManipulatorInterface::flipHorizontally() */ public function flipHorizontally() { return $this->add(new FlipHorizontally()); } /** * {@inheritdoc} * * @see \Imagine\Image\ManipulatorInterface::flipVertically() */ public function flipVertically() { return $this->add(new FlipVertically()); } /** * {@inheritdoc} * * @see \Imagine\Image\ManipulatorInterface::strip() */ public function strip() { return $this->add(new Strip()); } /** * {@inheritdoc} * * @see \Imagine\Image\ManipulatorInterface::paste() */ public function paste(ImageInterface $image, PointInterface $start, $alpha = 100) { return $this->add(new Paste($image, $start, $alpha)); } /** * {@inheritdoc} * * @see \Imagine\Image\ManipulatorInterface::applyMask() */ public function applyMask(ImageInterface $mask) { return $this->add(new ApplyMask($mask)); } /** * {@inheritdoc} * * @see \Imagine\Image\ManipulatorInterface::fill() */ public function fill(FillInterface $fill) { return $this->add(new Fill($fill)); } /** * {@inheritdoc} * * @see \Imagine\Image\ManipulatorInterface::resize() */ public function resize(BoxInterface $size, $filter = ImageInterface::FILTER_UNDEFINED) { return $this->add(new Resize($size, $filter)); } /** * {@inheritdoc} * * @see \Imagine\Image\ManipulatorInterface::rotate() */ public function rotate($angle, ColorInterface $background = null) { return $this->add(new Rotate($angle, $background)); } /** * {@inheritdoc} * * @see \Imagine\Image\ManipulatorInterface::save() */ public function save($path = null, array $options = array()) { return $this->add(new Save($path, $options)); } /** * {@inheritdoc} * * @see \Imagine\Image\ManipulatorInterface::show() */ public function show($format, array $options = array()) { return $this->add(new Show($format, $options)); } /** * {@inheritdoc} * * @see \Imagine\Image\ManipulatorInterface::thumbnail() */ public function thumbnail(BoxInterface $size, $settings = ImageInterface::THUMBNAIL_INSET, $filter = ImageInterface::FILTER_UNDEFINED) { return $this->add(new Thumbnail($size, $settings, $filter)); } /** * Registers a given FilterInterface in an internal array of filters for later application to an instance of ImageInterface. * * @param \Imagine\Filter\FilterInterface $filter * @param int $priority * * @return $this */ public function add(FilterInterface $filter, $priority = 0) { $this->filters[$priority][] = $filter; $this->sorted = null; return $this; } }