1
0
mirror of https://github.com/Intervention/image.git synced 2025-08-25 14:50:48 +02:00

Png Encoders

This commit is contained in:
Oliver Vogel
2021-10-30 20:33:45 +02:00
parent 80c08fd989
commit d4eaea5a9e
3 changed files with 53 additions and 0 deletions

View File

@@ -94,6 +94,13 @@ abstract class AbstractImage
);
}
public function toPng(): EncodedImage
{
return $this->encode(
$this->resolveDriverClass('Encoders\PngEncoder')
);
}
public function greyscale(): ImageInterface
{
return $this->modify(

View File

@@ -0,0 +1,20 @@
<?php
namespace Intervention\Image\Drivers\Gd\Encoders;
use Intervention\Image\Drivers\Abstract\Encoders\AbstractEncoder;
use Intervention\Image\EncodedImage;
use Intervention\Image\Interfaces\EncoderInterface;
use Intervention\Image\Interfaces\ImageInterface;
class PngEncoder extends AbstractEncoder implements EncoderInterface
{
public function encode(ImageInterface $image): EncodedImage
{
$data = $this->getBuffered(function () use ($image) {
imagepng($image->getFrames()->first()->getCore());
});
return new EncodedImage($data, 'image/png');
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace Intervention\Image\Drivers\Imagick\Encoders;
use Imagick;
use Intervention\Image\Drivers\Abstract\Encoders\AbstractEncoder;
use Intervention\Image\EncodedImage;
use Intervention\Image\Interfaces\EncoderInterface;
use Intervention\Image\Interfaces\ImageInterface;
class PngEncoder extends AbstractEncoder implements EncoderInterface
{
public function encode(ImageInterface $image): EncodedImage
{
$format = 'png';
$compression = Imagick::COMPRESSION_ZIP;
$imagick = $image->getFrames()->first()->getCore();
$imagick->setFormat($format);
$imagick->setImageFormat($format);
$imagick->setCompression($compression);
$imagick->setImageCompression($compression);
return new EncodedImage($imagick->getImagesBlob(), 'image/png');
}
}