Created
April 14, 2021 15:09
-
-
Save Nex-Otaku/ddc29b38b3332baf8734f17ae72c0452 to your computer and use it in GitHub Desktop.
Оптимизируем изображения в Yii2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
use yii\helpers\StringHelper; | |
class ImageOptimizerHelper | |
{ | |
public static function optimize($path) | |
{ | |
// Оптимизируем изображение с помощью расширения "ps/image-optimizer". | |
// Утилита сама определяет формат и выбирает подходящие настройки оптимизации. | |
// При успешной оптимизации, файл перезаписывается. | |
// Если оптимизирование не удалось, файл остаётся нетронутым. | |
$factory = new \ImageOptimizer\OptimizerFactory([ | |
'jpegoptim_options' => [ | |
// Вырезаем всё лишнее, как советует Гугл. | |
'--strip-all', | |
// Прогрессивное сжатие. | |
'--all-progressive', | |
], | |
]); | |
// Определяем оптимизатор. | |
// По умолчанию для JPG-файлов в компоненте выбирается "jpegtran", | |
// а нам нужен "jpegoptim", так как он лучше сжимает. | |
if (StringHelper::endsWith($path, ".jpg", false) | |
&& !StringHelper::endsWith($path, ".jpeg", false)) { | |
$optimizer = $factory->get('jpegoptim'); | |
} else if (StringHelper::endsWith($path, ".png", false)) { | |
$optimizer = $factory->get('png'); | |
} | |
// Оптимизатор GIF глючит, поэтому он отключен. | |
// Если оптимизатор не нашёлся, не проводим оптимизацию. | |
if (!empty($optimizer)) { | |
$optimizer->optimize($path); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment