<?php
namespace App\EventSubscriber;
use App\Entity\FicheImage;
use Imagine\Gd\Imagine;
use Imagine\Image\Box;
use Imagine\Image\ImageInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Vich\UploaderBundle\Event\Event;
use Vich\UploaderBundle\Event\Events;
class ResizeEventSubscriber implements EventSubscriberInterface
{
/**
* @var Imagine
*/
private $imagine;
public function __construct(Imagine $imagine)
{
$this->imagine = $imagine;
}
public static function getSubscribedEvents()
{
return [
Events::PRE_UPLOAD => ['resizeImageToUpload'],
];
}
public function resizeImageToUpload(Event $event)
{
$object = $event->getObject();
if (!$object instanceof FicheImage) {
return;
}
if (!$file = $object->getImageFile()) {
return;
}
if (!$file->getPathname()) {
return;
}
$this->imagine->open($file->getPathname())
->thumbnail(new Box(2000, 2000), ImageInterface::THUMBNAIL_INSET)
->strip() // Remove EXIF data
->save(null, ['jpeg_quality' => 90, 'format' => 'jpg'])
;
}
}