src/EventSubscriber/ResizeEventSubscriber.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\FicheImage;
  4. use Imagine\Gd\Imagine;
  5. use Imagine\Image\Box;
  6. use Imagine\Image\ImageInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Vich\UploaderBundle\Event\Event;
  9. use Vich\UploaderBundle\Event\Events;
  10. class ResizeEventSubscriber implements EventSubscriberInterface
  11. {
  12.     /**
  13.      * @var Imagine
  14.      */
  15.     private $imagine;
  16.     public function __construct(Imagine $imagine)
  17.     {
  18.         $this->imagine $imagine;
  19.     }
  20.     public static function getSubscribedEvents()
  21.     {
  22.         return [
  23.             Events::PRE_UPLOAD => ['resizeImageToUpload'],
  24.         ];
  25.     }
  26.     public function resizeImageToUpload(Event $event)
  27.     {
  28.         $object $event->getObject();
  29.         if (!$object instanceof FicheImage) {
  30.             return;
  31.         }
  32.         if (!$file $object->getImageFile()) {
  33.             return;
  34.         }
  35.         if (!$file->getPathname()) {
  36.             return;
  37.         }
  38.         $this->imagine->open($file->getPathname())
  39.             ->thumbnail(new Box(20002000), ImageInterface::THUMBNAIL_INSET)
  40.             ->strip() // Remove EXIF data
  41.             ->save(null, ['jpeg_quality' => 90'format' => 'jpg'])
  42.         ;
  43.     }
  44. }