Guest User

Untitled

a guest
Jan 17th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. video_image:
  2. providers:
  3. - sonata.media.provider.image
  4. formats:
  5. medium: { width: 1306, quality: 100 }
  6.  
  7. <?php
  8.  
  9. namespace AppBundleResizer;
  10.  
  11. use GaufretteFile;
  12. use ImagineGdImage;
  13. use SonataMediaBundleModelMediaInterface;
  14. use SonataMediaBundleResizerSimpleResizer;
  15.  
  16. class PngCustomResizer extends SimpleResizer
  17. {
  18. public function resize(MediaInterface $media, File $in, File $out, $format, array $settings)
  19. {
  20. /** @var Image $image */
  21. $image = $this->adapter->load($in->getContent());
  22.  
  23. $thumbnail = $image->thumbnail($this->getBox($media, $settings), $this->mode);
  24.  
  25. $resource = $thumbnail->getGdResource();
  26.  
  27. $width = $thumbnail->getSize()->getWidth();
  28. $height = $thumbnail->getSize()->getHeight();
  29.  
  30. // convert to png8 with alpha
  31. $img = imagecreatetruecolor($width, $height);
  32. $bga = imagecolorallocatealpha($img, 0, 0, 0, 127);
  33. imagecolortransparent($img, $bga);
  34. imagefill($img, 0, 0, $bga);
  35. imagecopy($img, $resource, 0, 0, 0, 0, $width, $height);
  36. imagetruecolortopalette($img, false, 255);
  37. imagealphablending($img, false);
  38. imagesavealpha($img, true);
  39.  
  40. $optimizedImage = new Image($img, $image->palette(), $image->metadata());
  41.  
  42. // set quality 0 to set png compression = 9
  43. $content = $optimizedImage->get($format, ['quality' => 0]);
  44.  
  45. $out->setContent($content, $this->metadata->get($media, $out->getName()));
  46. }
  47. }
Add Comment
Please, Sign In to add comment