57 lines
1.4 KiB
PHP
57 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace Aweos\Resizer\Compressors;
|
|
|
|
use Illuminate\Support\Collection;
|
|
use Intervention\Image\ImageManager;
|
|
use Storage;
|
|
|
|
class PngCompressor extends Compressor {
|
|
|
|
protected function getExtension(): string
|
|
{
|
|
return 'png';
|
|
}
|
|
|
|
public function make(string $path): array
|
|
{
|
|
$output = "/tmp/".str_slug(microtime());
|
|
$mimetype = mime_content_type($path);
|
|
|
|
system('imagemin '.escapeshellarg($path).' --plugin=pngquant > '.escapeshellarg($output));
|
|
system("mv ".escapeshellarg($output)." ".escapeshellarg($path));
|
|
|
|
return [
|
|
$path => [$path],
|
|
];
|
|
}
|
|
|
|
public function originalSize(): array
|
|
{
|
|
return getimagesize($this->media->root());
|
|
}
|
|
|
|
public function shouldGenerateVersions(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public function resize(string $source, string $destination, Collection $size): void
|
|
{
|
|
$extension = pathinfo($source, PATHINFO_EXTENSION);
|
|
$temp = microtime().'.'.$extension;
|
|
|
|
$r = app(ImageManager::class)->make($source);
|
|
app(ImageManager::class)
|
|
->canvas($size->get('width'), $size->get('height'))->insert($r, 'center')
|
|
->save(Storage::path($temp));
|
|
|
|
list($destWidth, $destHeight) = getimagesize(Storage::path($temp));
|
|
|
|
$versionFilename = $destination.'/'.$this->versionFilename($source, $destWidth, $destHeight);
|
|
|
|
$this->moveTo($temp, $versionFilename);
|
|
}
|
|
|
|
}
|