Ejemplo n.º 1
0
 public function transform(ImageInterface $image, ImagineInterface $imagine)
 {
     // Imagine comes with a built-in Autorotate filter, but it seems to be simpler to reimplement it
     // without bothering with the color.
     $metadata = $image->metadata();
     if (!isset($metadata['ifd0.Orientation'])) {
         return;
     }
     $orientation = $metadata['ifd0.Orientation'];
     if ($orientation == 3) {
         $image->rotate(180);
     } elseif ($orientation == 6) {
         $image->rotate(90);
     } elseif ($orientation == 8) {
         $image->rotate(-90);
     }
 }
Ejemplo n.º 2
0
 /**
  * {@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;
 }
Ejemplo n.º 3
0
 /**
  * {@inheritdoc}
  */
 public function apply(ImageInterface $image)
 {
     $metadata = $image->metadata();
     switch (isset($metadata['ifd0.Orientation']) ? $metadata['ifd0.Orientation'] : null) {
         case 1:
             // top-left
             break;
         case 2:
             // top-right
             $image->flipHorizontally();
             break;
         case 3:
             // bottom-right
             $image->rotate(180, $this->getColor($image));
             break;
         case 4:
             // bottom-left
             $image->flipHorizontally();
             $image->rotate(180, $this->getColor($image));
             break;
         case 5:
             // left-top
             $image->flipHorizontally();
             $image->rotate(-90, $this->getColor($image));
             break;
         case 6:
             // right-top
             $image->rotate(90, $this->getColor($image));
             break;
         case 7:
             // right-bottom
             $image->flipHorizontally();
             $image->rotate(90, $this->getColor($image));
             break;
         case 8:
             // left-bottom
             $image->rotate(-90, $this->getColor($image));
             break;
         default:
             // Invalid orientation
             break;
     }
     return $image;
 }
Ejemplo n.º 4
0
 /**
  * @param ImageInterface $oldsource
  * @return ImageInterface
  */
 private function preProcessSourceImg(ImageInterface $source)
 {
     /** @var MetadataBag $metadata */
     $metadata = $source->metadata();
     $orientation = $metadata->offsetGet('ifd0.Orientation');
     switch ($orientation) {
         case 3:
             $source->rotate(180);
             break;
         case 6:
             $source->rotate(90);
             break;
         case 8:
             $source->rotate(-90);
             break;
         default:
             break;
     }
     $metadata->offsetSet('ifd0.Orientation', 1);
     return $source;
 }
Ejemplo n.º 5
0
	/**
	 * Rotate an image by degrees.
	 *
	 * @param int $degrees
	 *
	 * @return Image
	 */
	public function rotate($degrees)
	{
		$this->_image->rotate($degrees);

		return $this;
	}
Ejemplo n.º 6
0
 /**
  * Re-orient an image using its embedded Exif profile orientation:
  * 1. Read the embedded exif data inside the image to determine it's orientation.
  * 2. Rotate and flip the image accordingly to re-orient it.
  * 3. Strip the Exif data from the image so that there can be no attempt to 'correct' it again.
  *
  * @param  string $path
  * @param  ImageInterface $image
  * @return ImageInterface $image
  */
 protected function autoOrient($path, ImageInterface $image)
 {
     $exif = exif_read_data($path);
     if (isset($exif['Orientation'])) {
         switch ($exif['Orientation']) {
             case 2:
                 $image->flipHorizontally();
                 break;
             case 3:
                 $image->rotate(180);
                 break;
             case 4:
                 $image->flipVertically();
                 break;
             case 5:
                 $image->flipVertically()->rotate(90);
                 break;
             case 6:
                 $image->rotate(90);
                 break;
             case 7:
                 $image->flipHorizontally()->rotate(90);
                 break;
             case 8:
                 $image->rotate(-90);
                 break;
         }
     }
     return $image->strip();
 }
Ejemplo n.º 7
0
 /**
  * {@inheritdoc}
  */
 public function apply(ImageInterface $image)
 {
     return $image->rotate($this->angle, $this->background);
 }
Ejemplo n.º 8
0
 protected function operationRotate(ImageInterface $image, int $degrees)
 {
     $image->rotate($degrees);
 }
Ejemplo n.º 9
0
 /**
  * Apply rotate filter
  *
  * @param  ImageInterface	$image An image instance
  * @param  float			$degree The rotation degree
  * @return void
  */
 protected function filterRotate(ImageInterface $image, $degree)
 {
     return $image->rotate($degree);
 }
 /**
  * @param \imagine\image\ImageInterface $image
  * @param string                        $filePath
  *
  * @return bool
  */
 protected function correctExifRotation($image, $filePath)
 {
     if (!function_exists('exif_read_data')) {
         return false;
     }
     $exif = @exif_read_data($filePath);
     if ($exif === false) {
         return false;
     }
     $orientation = (int) @$exif['Orientation'];
     if ($orientation < 2 || $orientation > 8) {
         return false;
     }
     switch ($orientation) {
         case 8:
             $image->rotate(-90);
             break;
         case 3:
             $image->rotate(180);
             break;
         case 6:
             $image->rotate(90);
             break;
     }
     return true;
 }
 /**
  * Loads and applies a filter on the given image.
  *
  * @param ImageInterface $image
  * @param array          $options
  *
  * @return ManipulatorInterface
  */
 public function load(ImageInterface $image, array $options = array())
 {
     $angle = isset($options['angle']) ? (int) $options['angle'] : 0;
     return 0 === $angle ? $image : $image->rotate($angle);
 }
Ejemplo n.º 12
0
 /**
  * @param \Imagine\Image\ImageInterface $image
  * @param array $options
  * @return \Imagine\Image\ImageInterface
  */
 protected function applyRotateFilter(ImageInterface $image, $options)
 {
     if (isset($options['angle'])) {
         $angle = (int) $options['angle'];
         $image->rotate($angle);
     }
     return $image;
 }
Ejemplo n.º 13
0
 /**
  * Re-orient an image using its embedded Exif profile orientation:
  * 1. Attempt to read the embedded exif data inside the image to determine it's orientation.
  *    if there is no exif data (i.e an exeption is thrown when trying to read it) then we'll
  *    just return the image as is.
  * 2. If there is exif data, we'll rotate and flip the image accordingly to re-orient it.
  * 3. Finally, we'll strip the exif data from the image so that there can be no attempt to 'correct' it again.
  *
  * @param string         $path
  * @param ImageInterface $image
  *
  * @return ImageInterface $image
  */
 protected function autoOrient($path, ImageInterface $image)
 {
     if (function_exists('exif_read_data')) {
         try {
             $exif = exif_read_data($path);
         } catch (ErrorException $e) {
             return $image;
         }
         if (isset($exif['Orientation'])) {
             switch ($exif['Orientation']) {
                 case 2:
                     $image->flipHorizontally();
                     break;
                 case 3:
                     $image->rotate(180);
                     break;
                 case 4:
                     $image->flipVertically();
                     break;
                 case 5:
                     $image->flipVertically()->rotate(90);
                     break;
                 case 6:
                     $image->rotate(90);
                     break;
                 case 7:
                     $image->flipHorizontally()->rotate(90);
                     break;
                 case 8:
                     $image->rotate(-90);
                     break;
             }
         }
         return $image->strip();
     } else {
         return $image;
     }
 }
Ejemplo n.º 14
0
 public function rotate(ImageInterface $image, $options = [])
 {
     $defaults = ['degrees' => 0];
     $options = array_merge($defaults, $options);
     $image->rotate($options['degrees']);
 }