Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace common\helpers;
- use yii\helpers\StringHelper;
- /**
- * Установка:
- * composer require ps/image-optimizer 1.1.2
- *
- * @author Nex Otaku <[email protected]>
- */
- 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');
- }
- if (!empty($optimizer)) {
- $optimizer->optimize($path);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment