Guest User

Untitled

a guest
Nov 10th, 2020
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.75 KB | None | 0 0
  1. <?php
  2.  
  3. namespace common\helpers;
  4.  
  5. use yii\helpers\StringHelper;
  6.  
  7. /**
  8.  * Установка:
  9.  * composer require ps/image-optimizer 1.1.2
  10.  *
  11.  * @author Nex Otaku <[email protected]>
  12.  */
  13. class ImageOptimizerHelper
  14. {
  15.     public static function optimize($path)
  16.     {
  17.         // Оптимизируем изображение с помощью расширения "ps/image-optimizer".
  18.         // Утилита сама определяет формат и выбирает подходящие настройки оптимизации.
  19.         // При успешной оптимизации, файл перезаписывается.
  20.         // Если оптимизирование не удалось, файл остаётся нетронутым.
  21.         $factory = new \ImageOptimizer\OptimizerFactory([
  22.             'jpegoptim_options' => [
  23.                 // Вырезаем всё лишнее, как советует Гугл.
  24.                 '--strip-all',
  25.                 // Прогрессивное сжатие.
  26.                 '--all-progressive',
  27.             ],
  28.         ]);
  29.  
  30.         // Определяем оптимизатор.
  31.         // По умолчанию для JPG-файлов в компоненте выбирается "jpegtran",
  32.         // а нам нужен "jpegoptim", так как он лучше сжимает.
  33.         if (StringHelper::endsWith($path, ".jpg", false)
  34.             && !StringHelper::endsWith($path, ".jpeg", false)) {
  35.             $optimizer = $factory->get('jpegoptim');
  36.         } else if (StringHelper::endsWith($path, ".png", false)) {
  37.             $optimizer = $factory->get('png');
  38.         }
  39.  
  40.         if (!empty($optimizer)) {
  41.             $optimizer->optimize($path);
  42.         }
  43.     }
  44. }
  45.  
Advertisement
Add Comment
Please, Sign In to add comment