zend-blog-3-backend

Форк
0
51 строка · 1.3 Кб
1
<?php
2

3
namespace App\Model\Resizer;
4

5
use App\Model\ResizerInterface;
6
use Imagick;
7
use ImagickException;
8
use Symfony\Component\Process\Exception\ProcessFailedException;
9
use Symfony\Component\Process\Process;
10

11
class PngResizer implements ResizerInterface
12
{
13
    use DebugAnnotation;
14

15
    /**
16
     * @throws ImagickException
17
     * @throws ProcessFailedException
18
     */
19
    public function resize(string $filePath, string $newFilePath, int $width, int $height)
20
    {
21
        $image = new Imagick($filePath);
22
        $image->stripImage();
23

24
        $image->scaleImage($width, $height);
25

26
        $image->setFormat($this->getFormat());
27
        $image->setImageFormat($this->getFormat());
28

29
        $image->setCompression(Imagick::COMPRESSION_ZIP);
30
        $image->setImageCompression(Imagick::COMPRESSION_ZIP);
31

32
        //$this->annotate($width, $height, $image);
33

34
        $image->writeImage($newFilePath);
35
        $image->clear();
36

37
        $process = new Process(
38
            '/usr/bin/pngquant -s1 --quality=60-80 --ext .png -f ' . escapeshellarg($newFilePath)
39
        );
40
        $process->run();
41

42
        if (!$process->isSuccessful()) {
43
            throw new ProcessFailedException($process);
44
        }
45
    }
46

47
    protected function getFormat(): string
48
    {
49
        return 'png';
50
    }
51
}
52

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.