Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- video_image:
- providers:
- - sonata.media.provider.image
- formats:
- medium: { width: 1306, quality: 100 }
- <?php
- namespace AppBundleResizer;
- use GaufretteFile;
- use ImagineGdImage;
- use SonataMediaBundleModelMediaInterface;
- use SonataMediaBundleResizerSimpleResizer;
- class PngCustomResizer extends SimpleResizer
- {
- public function resize(MediaInterface $media, File $in, File $out, $format, array $settings)
- {
- /** @var Image $image */
- $image = $this->adapter->load($in->getContent());
- $thumbnail = $image->thumbnail($this->getBox($media, $settings), $this->mode);
- $resource = $thumbnail->getGdResource();
- $width = $thumbnail->getSize()->getWidth();
- $height = $thumbnail->getSize()->getHeight();
- // convert to png8 with alpha
- $img = imagecreatetruecolor($width, $height);
- $bga = imagecolorallocatealpha($img, 0, 0, 0, 127);
- imagecolortransparent($img, $bga);
- imagefill($img, 0, 0, $bga);
- imagecopy($img, $resource, 0, 0, 0, 0, $width, $height);
- imagetruecolortopalette($img, false, 255);
- imagealphablending($img, false);
- imagesavealpha($img, true);
- $optimizedImage = new Image($img, $image->palette(), $image->metadata());
- // set quality 0 to set png compression = 9
- $content = $optimizedImage->get($format, ['quality' => 0]);
- $out->setContent($content, $this->metadata->get($media, $out->getName()));
- }
- }
Add Comment
Please, Sign In to add comment