dev-test
dev-testSymfony FulgurioImageHandlerBundle
MIT
The Requires
by Vincent GUERARD
dev-master
9999999-devSymfony FulgurioImageHandlerBundle
MIT
The Requires
by Vincent GUERARD
Symfony FulgurioImageHandlerBundle
Image handler bundle use the very helpful Vich uploader bundle, which allows file upload with annotations., (*1)
In the same way, Image handler adds in this bundle a way to handle uploaded picture, like resizing or cropping., (*2)
Here is an example of use, with the table field "avatar", (*3)
First, add the namespace for annotations : ``` php use Vich\UploaderBundle\Mapping\Annotation as Vich; use Fulgurio\ImageHandlerBundle\Annotation as ImageAnnotation;, (*4)
Configure your entity class as explain in Vich Uploader : ``` php /** [...] * @Vich\Uploadable */
Add a new class member, avatarFile ``` php /** * @var Symfony\Component\HttpFoundation\File\UploadedFile * @Vich\UploadableField(mapping="avatar_image" fileNameProperty="avatar") * @Assert\File( * maxSize="1M", * mimeTypes={"image/png", "image/jpeg", "image/pjpeg"} * ) */ private $avatarFile;, (*5)
As you'll see, avatarFile is associated to avatar with fileNameProperty We update the setAvarFile method avatar member, because if entity has no change, file will not be uploaded as well. So we "fake" a change by update ''avatar'' member. ``` php /** * Set avatarFile * * @param \Symfony\Component\HttpFoundation\File\UploadedFile $avatarFile */ public function setAvatarFile(UploadedFile $avatarFile) { $this->avatarFile = $avatarFile; // Because we need an update of User object when form submit a file, // we make a fake update of $avatar if ($avatarFile) { $this->setAvatar(time()); } return $this; }
At the end, you need to add image handler annotation to original field, avatar : ``` php /** * @ORM\Column(type="string", length=128, nullable=true) * * @ImageAnnotation\ImageHandle(mapping="avatar_image", action="resize", width=100, height=100) */ private $avatar;, (*6)
If you want to crop the picture, just replace the action by "crop", and change width of heigth as wanted. You can type 3 fields for each function : - width (optional): width to resize / crop - height (optional): height to resize / crop - mappping (optional): name of config mapping, to set width and height in global config. See above - action (optional): by default, you'll resize the picture, but "crop" is also available In app/config/config.yml, just type something like that : ``` yaml fulgurio_image_handler: mappings: avatar_image: width: 400 height: 400 second_size: width: 200 height: 200 action: crop
With Vich/UploadBundle, you need to config a mapping name. In my case, it's in @Vich\UploadableField(mapping="avatar_image" fileNameProperty="avatar"). If you put in you config file a fulgurio_image_handler.mappings.avatar_image, it will use this settings, so picture will be resize to 400x400. But if you add a mapping settings in ImageHandler annotatin, like @ImageAnnotation\ImageResize(mapping="second_size") ImageHandler will crop to 200x200. Groovy !, (*7)
Symfony FulgurioImageHandlerBundle
MIT
Symfony FulgurioImageHandlerBundle
MIT