Оптимизация картинок и конвертация в webp - автоматически и без сторонних сервисов

59

Разработчик: Dev2Fun

Установлено: Более 1000

Обновлено: 14.05.2025

Адаптирован под мобильные устройства

Совместим с редакциями Битрикс: «Старт» / «Стандарт» / «Малый бизнес» / «Бизнес» / «Энтерпрайз» / «Корпоративный портал» / «Интернет-магазин + CRM»

В рамках SEO все продвигаемые проекты оптимизируют картинки и конвертируют в webp/avif, для браузеров поддерживающих webp/avif.
С этим модулем ваши картинки будут оптимизироваться и/или конвертироваться в webp/avif автоматически.
С этим модулем поисковые системы будут ещё сильней любить ваш сайт :)

Модуль также доступен на GitHub

Что оптимизирует модуль:
  • картинки jpeg
  • картинки png
  • файлы pdf
  • картинки gif
  • картинки svg
Что конвертируется в webp/avif:
  • картинки jpeg
  • картинки png
Преимущества модуля:
  • поддержка мультисайтовости
  • модуль использует рекомендуемые google: jpegoptim, optipng, gs, svgo, gifsicle, cwebp, imagick
  • сжатие картинок в 5-10 раз
  • автоматическая конвертация картинок в webp/avif

  • конвертация в webp/avif "на лету"
  • пройдете анализ PageSpeed Insights
  • автоматическая оптимизация (на лету)
  • оптимизация картинок при ресайзе (на лету)
  • не использует сторонние сервисы
  • не использует curl
  • почти не нагружает сервер
  • оптимизирует без грязи
  • освободится значительное кол-во места на диске (в 5-10 раз!)
  • progressive jpeg
  • возможность оптимизации через консоль (в фоне)
  • гибкие настройки
  • поддержка битрикс24
  • вкл/выкл автоматического уменьшение размера картинок. Можно задать максимальный размер и все картинки которые больше будут автоматически уменьшаться до этого размера.
Режимы конвертации:
  • hitConvert - Конвертация на хитах. При обращении к картинке. Может работать совместно с режимом postConvert. Создает нагрузку при первом обращении к картинке.
  • postConvert - Конвертация в самом конце формирования страницы. Конвертирует все подходящие под условия картинки. Может работать совместно с режимом hitConvert. Создает нагрузку при первом обращении к странице.
  • lazyConvert (рекомендуем) - Отложенная конвертация картинок. В фоне конвертирует все найденные картинки по посещаемым страницам. Работает отдельно от всех режимов. Не создает нагрузку при заходе на страницу.
Поддержка оптимизации при:
  • загрузки картинки превью и детальной у элементов
  • загрузки картинки в свойство FILE Image у элементов
  • загрузки картинки в разделы элементов
  • загрузки картинки в модуль main
  • ресайзе картинки (в т.ч. кэшируемой)
Что также идет:
  • вкл/выкл оптимизация у элементов/разделов/ресайза
  • можно установить качество файлов при сжатии
  • можно установить степень сжатия у файлов
  • вкл/выкл progressive jpeg
  • можно сжать все имеющиеся картинки прям из админки
  • настройки для конвертации в webp/avif
Консольный скрипт для оптимизации:
/bitrix/modules/dev2fun.imagecompress/console/optimize.php
Консольный скрипт для конвертации:

/bitrix/modules/dev2fun.imagecompress/console/convert.php

Консольный скрипт для очистки кэша страниц конвертаций:

/bitrix/modules/dev2fun.imagecompress/console/cache-delayed-delete.php


Как отключить модуль во время обмена и синхронизаций:
\Bitrix\Main\Loader::includeModule("dev2fun.imagecompress");
\Dev2fun\ImageCompress\Compress::setEnable(false); // отключить
\Dev2fun\ImageCompress\Compress::getEnable(); // получить состояние

Решение частых вопросов

Вопрос: Как очистить сконвертированные картинки.
Ответ: Вам нужно сделать следующие действия:

1. Очистить таблицы:
DELETE FROM b_d2f_imagecompress_images_to_converted;
DELETE FROM b_d2f_imagecompress_images_converted;
(запросы можно выполнить на странице /bitrix/admin/sql.php?lang=ru&del_query=Y)

2. Удалить файлы webp через админку или консоль: rm -rf <path_to_site>/upload/resize_cache/webp

3. Очистить кеш полностью (через админку) или только html в консоле: rm -rf <path_to_site>/bitrix/html_pages


Вопрос: Можно ли восстановить исходные картинки при их оптимизации?
Ответ: В бесплатной версии модуля, при оптимизации, исходная картинка заменяется на оптимизированную версию. Тем самым восстановить исходную картинку не возможно.
Вам следует сделать бэкап папки upload перед началом оптимизаций.

Вопрос: Можно ли восстановить исходные картинки при их конвертации в webp/avif?
Ответ: При конвертации восстановить исходные картинки можно. Для этого необходимо отключить конвертацию в настройках модуля и сбросить кэш.

Вопрос: Что делать, если возникли проблемы?
Ответ: При любых проблемах следует писать на почту support@dev2fun.com или https://t.me/dev2fun_support

Поблагодарить автора
Коллеги, просим вас сообщать если у вас при работе с модулем возникнут баги/неудобства/идеи или что-то ещё.
Сделаем модуль лучше все вместе.
Спасибо.

Правила установки:<br /><ol><li>Установить модуль в административной панели<br /><li>Установить через консоль jpegoptim, optipng, gs, svgo, gifsicle<br /><li>Перейти в настройки модуля<br /><li>Указать пути до: jpegoptim, optipng, ps2pdf, svgo, gifsicle и сохранить<br /><li>Активировать нужные модули<br /><li>Поблагодарить автора <img src="/upload/main/smiles/3/bx_smile_smile.png" border="0" data-code=":)" data-definition="UHD" alt=":)" style="width:20px;height:20px;" title="С улыбкой" class="bx-smile" /><br /><li>Использовать.<br /></ol>Как установить jpegoptim:<br /><ul><li>Ubuntu/Debian: sudo apt-get install jpegoptim<br /><li>Centos/BitrixVM: sudo yum install jpegoptim<br /></ul>Как установить optipng:<ul><li>Ubuntu/Debian: sudo apt-get install optipng<br /><li>Centos/BitrixVM: sudo yum install optipng<br /></ul>Как установить gs:<br /><ul><li>Centos/BitrixVM: sudo yum install ghostscript<br /><li>Debian/Ubuntu: sudo apt-get install ghostscript<br /><li>Alpine: sudo apk add ghostscript<br /><li>Arch Linux: sudo pacman -S ghostscript<br /><li>Kali Linux: sudo apt-get install ghostscript<br /><li>Fedora: sudo dnf install ghostscript<br /><li>OS X: sudo brew install ghostscript<br /><li>Raspbian: sudo apt-get install ghostscript<br /></ul>Как установить svgo:<br /><ul><li>установить node.js 20+<br /><li>npm install -g svgo<br /><li>переместить svgo в /usr/lib/node_modules<br /><li>для svgo сделать симлинк: ln -s /usr/lib/node_modules/svgo/bin/svgo /usr/bin/svgo<br /><li>для node.js тоже сделать симлинк в папку /usr/bin<br /></ul>Как установить gifsicle:<br /><ul><li>Centos/BitrixVM: sudo yum install gifsicle<br /><li>Debian/Ubuntu: sudo apt-get install gifsicle<br /></ul>Как установить cwebp:<br /><ul><li>Centos/BitrixVM: sudo yum install libwebp-tools<br /><li>Debian/Ubuntu: sudo apt-get install webp<br /></ul><b>Как настроить конвертацию в webp</b>:<br /><ul><li>поставить галку на активности<br /><li>выбрать нужный алгоритм из phpWebp и cwebp (мы рекомендуем phpWebp, он сжимает в 10-15 раз лучше, но чуть дольше)<br /><li>указать качество, мы рекомендуем ставить 80 (+/-10)<br /></ul><b>Важно знать про конвертацию</b>:<br /><ul><li>конвертер не удаляет исходные файлы, а создает новые (папка: /upload/resize_cache/webp)<br /><li>указанную выше папку можно спокойно удалить, тогда модуль пересоздаст webp-файлы<br /><li>алгоритм phpWebp использует расширение GD<br /><li>алгоритм cwebp использует расширение CWebP (<a href="https://developers.google.com/speed/webp/docs/using" target="_blank" >https://developers.google.com/speed/webp/docs/using</a>)<br /><li>при конвертации вызываются события: OnBeforeConvertImage, OnBeforeConvertImageWebp и OnAfterResize<br /></ul><b><div class="blog-post-quote" title="Цитата"><table class="blogquote"><tr><td>Важно: модуль использует серверные утилиты. Необходимо, чтоб на сервере они были установлены.</td></tr></table></div><div class="blog-post-quote" title="Цитата"><table class="blogquote"><tr><td>Если у вас возникли сложности, пишите нам в техподдержку, постараемся вам помочь.</td></tr></table></div></b><br /><br /><a href="https://www.tinkoff.ru/cf/36wVfnMf7mo" target="_blank" >Поблагодарить автора</a><br />
<b>Автор</b>: <a href="https://darkfriend.ru/" target="_blank" >darkfriend</a><br /><div class="blog-post-quote" title="Цитата"><table class="blogquote"><tr><td>Коллеги, в связи с кризисом, с 23 апреля 2020 года для всех бесплатных модулей, бесплатная техническая поддержка упразднена.<br /><b>Если ваше обращение не об <u>ошибке в модуле</u> или <u>ошибке из-за модуля</u>, необходимо сделать <a href="https://www.tinkoff.ru/cf/36wVfnMf7mo" target="_blank" >донат</a> от 1000 руб.</b><br />Вам нужно понимать, что каждое ваше обращение занимает время специалиста.<br />Просим проявить понимание и не нагружать службу просто так.<br />На многие ваши вопросы может ответить любой другой специалист по битриксу.<br /><br /><br />После того как вы сделали <a href="https://www.tinkoff.ru/cf/36wVfnMf7mo" target="_blank" >донат</a> в заголовке письма укажите 4 последние цифры кошелька или карты с которой донатили.<br />Одно обращение один <a href="https://www.tinkoff.ru/cf/36wVfnMf7mo" target="_blank" >донат</a>. Если вопрос в обращении закрылся, то для нового вопроса необходимо сделать <a href="https://www.tinkoff.ru/cf/36wVfnMf7mo" target="_blank" >донат</a>.<br /><br /><br /><b>Как сделать SUPER-обращение.</b><br />Делаете <a href="https://www.tinkoff.ru/cf/36wVfnMf7mo" target="_blank" >донат</a> на 4000 руб и в заголовке к номеру (последние 4 цифры кошелька или карты) укажите слово SUPER.<br /><b><u>Такие обращения мы обработаем вне очереди.</u></b></td></tr></table></div><br />Мы оказываем техническую поддержку по email и в телеграм.<br /><br />Контакты: <a href="mailto:support@dev2fun.com" target="_blank" >support@dev2fun.com</a> или <a href="https://t.me/dev2fun_support" target="_blank" >https://t.me/dev2fun_support</a><br /><br />Правила для письма: <br /><ol><li>В теме письма необходимо указать ID модуля<br /><li>В теле письма необходимо указать суть проблемы и описать ваши действия, которые к ней привели.<br /><li>Приложить скриншоты.<br /><li>Прислать доступы до админки и фтп (желательно)<br /></ol>Pre-base техподдержка осуществляется:<br /><br />В рабочие дни, со вторника по четверг.<br />С 11 до 16 (по мск)<br />