Skip to content

Instantly share code, notes, and snippets.

@Nex-Otaku
Created April 14, 2021 15:09
Show Gist options
  • Save Nex-Otaku/ddc29b38b3332baf8734f17ae72c0452 to your computer and use it in GitHub Desktop.
Save Nex-Otaku/ddc29b38b3332baf8734f17ae72c0452 to your computer and use it in GitHub Desktop.
Оптимизируем изображения в Yii2
<?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