Файл: concrete5.7.5.6/concrete/vendor/imagine/imagine/lib/Imagine/Filter/Basic/Autorotate.php
Строк: 48
<?php
/*
* This file is part of the Imagine package.
*
* (c) Bulat Shakirzyanov <mallluhuct@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace ImagineFilterBasic;
use ImagineFilterFilterInterface;
use ImagineImageImageInterface;
use ImagineImagePaletteColorColorInterface;
/**
* Rotates an image automatically based on exif information.
*
* Your attention please: This filter requires the use of the
* ExifMetadataReader to work.
*
* @see https://imagine.readthedocs.org/en/latest/usage/metadata.html
*/
class Autorotate implements FilterInterface
{
private $color;
/**
* @param string|array|ColorInterface $color A color
*/
public function __construct($color = '000000')
{
$this->color = $color;
}
/**
* {@inheritdoc}
*/
public function apply(ImageInterface $image)
{
$metadata = $image->metadata();
switch (isset($metadata['ifd0.Orientation']) ? $metadata['ifd0.Orientation'] : null) {
case 3:
$image->rotate(180, $this->getColor($image));
break;
case 6:
$image->rotate(90, $this->getColor($image));
break;
case 8:
$image->rotate(-90, $this->getColor($image));
break;
default:
break;
}
return $image;
}
private function getColor(ImageInterface $image)
{
if ($this->color instanceof ColorInterface) {
return $this->color;
}
return $image->palette()->color($this->color);
}
}