Как сжать изображения в форматах PNG и JPG на сайте? И каким образом можно преобразовать все изображения на сайте в формат WebP?

Добрый день! Могли бы вы подсказать о модулях или фрагментах кода, которые помогут сжать и конвертировать все изображения на сайте, использующем битрикс, в формат webp?
  • 5 ноября 2024 г. 7:43
Ответы на вопрос 2
Добрый день! Для сжатия изображений в форматах PNG и JPG, а также преобразования их в формат WebP на сайте, использующем систему управления контентом Битрикс, вы можете воспользоваться несколькими методами:

### Сжатие изображений

1. **Использование сторонних библиотек**: 
   - Для сжатия изображений можно использовать PHP-библиотеки, такие как [Intervention Image](http://image.intervention.io). Она поддерживает сжатие JPG и PNG. Пример кода:
     ```php
     use Intervention\Image\ImageManager;

     $manager = new ImageManager();
     $image = $manager->make('path/to/image.jpg');

     // Сжимаем изображение
     $image->resize(800, null, function ($constraint) {
         $constraint->aspectRatio();
     })->save('path/to/compressed_image.jpg', 75); // Качество от 0 до 100
     ```

2. **Использование командной строки**:
   - Если у вас есть доступ к серверу, вы можете использовать программное обеспечение, такое как `optipng` для PNG и `jpegoptim` для JPG. Вы можете создать PHP-скрипт, который будет запускать эти команды.

### Конвертация в WebP

1. **Использование GD или Imagick**:
   - Для конвертации изображений в формат WebP можно использовать расширение GD или Imagick. Пример кода на PHP с использованием GD:
     ```php
     $image = imagecreatefromjpeg('path/to/image.jpg');
     imagewebp($image, 'path/to/image.webp', 80); // Качество от 0 до 100
     imagedestroy($image);
     ```

2. **Пакет для Битрикс**: 
   - Можно использовать сторонние модули для Битрикс, такие как [WebP converter](https://www.1c-bitrix.ru/marketplace/bitrix/cms/webp-converter/) или аналогичные. Они обычно предоставляют интерфейс для массового преобразования изображений.

### Массированное преобразование

Если необходимо массово обработать все изображения на сайте, вы можете написать скрипт, который будет проходить по всем папкам и обрабатывать изображения. Например:

```php
$directory = 'path/to/images/';
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));

foreach ($files as $file) {
    if ($file->isFile() && in_array($file->getExtension(), ['jpg', 'jpeg', 'png'])) {
        // Сжатие и преобразование
        $image = imagecreatefromstring(file_get_contents($file->getPathname()));

        // Пример сжатия и конвертации в WebP
        imagewebp($image, $file->getPathname() . '.webp', 80);
        imagedestroy($image);
    }
}
```

### Заключение

Перед использованием каких-либо скриптов или модулей, обязательно сделайте резервные копии изображений, чтобы избежать потери данных в случае неправильной обработки.
нет смысла переводить, я проверял и по скорости и по размеру и по всему что-только можно. 
Вот вам вариант который безопасен, быстр дешев и сердит. дает 98% от того что дает wepb но бе костылей и блэкджека.
Местами даже больше 100% так что можно сказать что плюс минус одинаково.
https://klondike-studio.ru/blog/optimizatsiya-kart...
Похожие вопросы