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

Модуль также доступен на GitHub
Что оптимизирует модуль:
- картинки jpeg
- картинки png
- файлы pdf
- картинки gif
- картинки svg
- картинки 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
- агент конвертации картинок
- агент автоматической очистки истекшего кэша
- выбор браузеров в которых выводятся webp/avif версии картинок
- вкл/выкл проверки поддержки браузером 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
| Поблагодарить автора |
| Коллеги, просим вас сообщать если у вас при работе с модулем возникнут баги/неудобства/идеи или что-то ещё. Сделаем модуль лучше все вместе. Спасибо. |
* Переход с webpack.js на vite.js
* Убрана проверка на readable и executable из под php. Теперь проверяется только на наличие версии
* Улучшена проверка доступности функции exec и необходимых серверных утилит
* Добавлена возможность сбрасывать кэш поиска картинок для конвертации
* Добавлена возможность сбрасывать кэш замены исходных картинок на webp/avif версии
* Улучшено удаление сконвертированной картинки при удалении исходной
* Значительно улучшена безопасность, при работе с exec
* Возвращена вероятность ошибки "Mysql query error: (2006) MySQL server has gone away (400)". Возникает при наступлении таймаута коннекта к mysql
* Исправлен баг "Dev2fun\ImageCompress\Compress::resize(): Argument #2 ($strFilePath) must be of type string, null given, called in"
* Обновление фронтенда
* Конвертация. Исправление ориентации при конвертации в webp (предложил @bxmeta)
* Конвертация. Исправление ориентации при конвертации в avif
* Оптимизация. Исправление ориентации при оптимизации при использовании jpegoptim и optipng
* Оптимизация. Исправлена ошибка "Mysql query error: (2006) MySQL server has gone away (400)"
* Оптимизация. Улучшена оптимизация. Теперь при использовании jpegoptim и optipng переносятся оригинальные права и дата создания
* Конвертация. UI. Добавлен функционал указания браузеров для которых должны выводиться webp/avif версии картинок
* Конвертация. UI. Добавлен функционал вкл/выкл проверки поддержки браузером webp/avif через заголовок Accept
* Конвертация. Теперь в cli всегда работает конвератация, даже если активность конвертации отключена у сайта по-умолчанию. Ранее, если у сайта по-умолчанию была отключена конверация, то в cli конвертация тоже не работала.
* Исправлен баг проверки работы интервальных агентов на кроне
* Настройки. Добавлена отдельная ошибка при проверке на доступность чтения/воспризведения у консольных утилит: jpegoptim, optipng, ps2pdf, cwebp, svgo, nodejs, gifsicle
* Оптимизация. Исправлена редкая ошибка Argument #1 ($strFilePath) must be of type string....
* Конвертация. Добавлена возможность активировать/деактивировать агента для конвертации в настройках модуля
* Конвертация. Добавлен функционал поиска картинок для конвертации
* Конвертация. Добавлен функционал удаления конвертированных картинок
* Улучшен алгоритм проверки, что интервальные агенты работают через cron
* Исправлены баги в списках оптимизаций и конвертаций картинок
* Улучшена поддержка кириллических доменов
* Снижена поддержка не валидных названий картинок. Выявлено, что сейчас не поддерживаются названия с пробелами и не валидными знаками
* Улучшено удаление webp/avif-версий удаляемых картинок
* Добавлен интервальный агент для оптимизации картинок. Крайне важно, чтоб интервальные агенты работали на кроне!
* Исправлен баг при удалении модуля
* Исправлен баг при сохранении флага "Включить автоочистку resize_cache при полном сбросе кэша"
* Улучшен поиск сопоставления исходных картинок с webp/avif копиями
* Улучшен функционал исключения по исходным картинкам
* Изменено место хранение webp/avif картинок. Теперь картинки хранятся по пути /upload/dev2fun.imagecompress
* Добавлен функционал миграции из старого хранилища в новый, путь: /bitrix/admin/dev2fun_imagecompress_convert_move.php
* Исправлена проблема с пропаданием webp/avif версий после полного сброса кэша
* Добавлена возможность очистки по кнопке ресайзнутых картинок из директорий: /upload/dev2fun.imagecompress/webp/resize_cache и /upload/dev2fun.imagecompress/webp/resize_cache
* Добавлена возможность автоматического сброса ресайзнутых картинок при полном сбросе кэша. Делается на странице настройки конвертаций
* Теперь при ошибках пишутся сообщения в общий журнал событий
* Добавлен foreign key на поля: b_d2f_imagecompress_images_to_converted.IMAGE_ID и b_d2f_imagecompress_images_to_converted.CONVERTED_IMAGE_ID
Если столкнетесь с проблемами при обновлении, то можете переустановить модуль или написать на почту support@dev2fun.com и мы поможем
* Конвертация: Исправлен fatal error
* Конвертация: добавлена поддержка путей не от корня сайта
* Конвертация: исправлен warning "Array to string conversion"
* Поправлены баги в интерфейсе при конвертации
* Поправлен баг c двойным upload при работе с методом Convert::convertImageByPath()
* Изменена регулярка исключения по-умолчанию с (\/bitrix\/.*) на (\/bitrix\/(?!services\/main\/ajax\.php).*) в связи с запросами битрикса в /bitrix/services/main/ajax.php. Внимание! При обновлении старая регулярка удалится из настроек.
* добавлен функционал авто-очистки истекшего кэша
* добавлен скрипт авто-очистки истекшего кэша для крона, располагается по адресу: ./console/cache-delayed-delete.php
* добавлен агент авто-очистки истекшего кэша для крона
* добавлена возможность указания пути до node.js для запуска svgo
* исправлен баг Column `SITE_ID` is not found in the `b_d2f_imagecompress_images`
* исправление бага при проверке поддержки конвертации у браузера
* исправление бага в путях при конвертации картинок в корне папки upload
- Добавлены дополнительные настройки
- Добавлена поддержка мультисайтовости для конвертаций
- Поправлены несколько багов
- Улучшена работа режима postConvert
- Улучшена обработка ошибок
- Переработано меню модуля в админке
- При оптимизации добавлено сохранение нового размера файла картинки для битрикс24 (таблица b_disk_object)
- исправление бага в админке при сохранении страниц-исключений
- добавлен консольный скрипт конвертации картинок в WEBP/AVIF. Расположение `console/convert.php`
- правка активности конвертации
- добавлена поддержка php8.0
- Улучшена страница настроек
- Поправлено несколько багов
- Добавлена поддержка конвертации картинок в avif
- Добавлена поддержка страниц исключений для конвертации в webp (главная страница обозначается как index.php)
- Улучшена оптимизация pdf
- Добавлена поддержка выбора вида оптимизации для pdf
- Добавлена возможность указания поиска поддерживаемых атрибутов для пост-конвертации
- Добавлено время жизни кэша для пост-конвертации
Не забудьте сбросить кэш
- Добавлено событие OnBeforeCheckWebpBrowserSupport c переменной $supportBrowsers, для изменения списка поддерживаемых браузеров. Переменная передается по ссылке.
- Добавлено событие OnAfterCheckWebpSupport c переменной $result, для изменения результата проверки поддержки webp. Результат необходимо вернуть `return $result;`
- Исправлена проверка текущей страницы, теперь webp по-умолчанию отключен в разделах `/bitrix/admin/`
- Убрана проверка поддержки webp в HTTP_ACCEPT из-за отсутствия её в некоторых ajax-запросах. Если хотите добавить, кастомизируйте через событие `OnAfterCheckWebpSupport`
- Исправлен баг в проверке размера файла
Спасибо за ожидание! Вы лучшие!
Не забудьте cбросить кэш.
Примечание: Вам необходимо cбросить кэш.
- Поправлен баг при конвертации прозрачных png-файлов.
- Поправлен баг с выводом пустых картинок
Примечание: Вам необходимо почистить папку upload/resize_cache и сбросить кэш.
Примечание: Если браузер не поддерживает webp, то показываются старые файлы.
- Добавлены алгоритмы конвертаций в webp: phpWebp и cwebp
- Добавлены настройки для конвертаций в webp
- Обновлен роадмап и описание решения в на странице маркетплейса
- Добавлена оптимизация svg-изображений
- Добавлена поддержка списков pdf/gif/svg в списке
Roadmap
- 0.5.x: будет добавлена возможность оптимизаций по кастомным путям
- 0.6.x: будет добавлена возможность конвертаций картинок
- 1.0.x: будет добавлена возможность замены дублирующих картинок
Поддержите, пожалуйста, выпуск обновлений донатом
\Bitrix\Main\Loader::includeModule('dev2fun.imagecompress'); \Dev2fun\ImageCompress\Compress::setEnable(false); // отключить \Dev2fun\ImageCompress\Compress::getEnable(); // получить состояние
- Добавлен метод для кастомного запуска оптимизации
\Bitrix\Main\Loader::includeModule('dev2fun.imagecompress'); \Dev2fun\ImageCompress\Process::start(); // запускает оптимизацию 30 не оптимизированных файлов
- Добавлена возможность вкл/выкл оптимизация png, jpeg, pdf
- Добавлена возможность удаления отсутствующих файлов
- Добавлена возможность указать права для оптимизируемого файла (при указании "0" права не меняются)
Поддержите нас донатом, спасибо!
- Добавлена возможность повторной оптимизации
- Улучшен поиск по имени файла
Коллеги, готовим минорный релиз с функционалом заменой дублирующих картинок символьными ссылками.
Поддержите нас донатом, спасибо!
- добавлен функционал возможности ресайза картинок перед оптимизацией
- Внимание! Ветка 0.2.X последняя для PHP5. С версии модуля 0.3+ будет поддерживаться только PHP7+.
Пожалуйста обновите версию PHP заранее!
- Добавлена поддержка выбора алгоритмов оптимизации. Задел на будущее
- Добален шаг с сохранением таблиц оптимизированных картинок при удалении модуля
- Улучшена обработка ошибок
- Добавлен скрипт для оптимизации из консоли /bitrix/modules/dev2fun.imagecompress/console/optimize.php подробности на странице модуля
- Поддерживаемая версия PHP 5.5+
- Улучшена поддержка PHP7.2
- исправлен баг с подвисанием при отсутствии картинок
- добавлен функционал количества картинок за шаг оптимизации
- добавлена проверка на наличие картинке на диске
- добавлен запрет сжатия при отсутствии картинки на диске
- теперь при установке автоматически включается прогрессивное сжатие
- теперь при установке у optipng автоматически устанавливается степень сжатия 5
- добавленна поддержка progressive jpeg
- добавленна поддержка запрета уменьшения качества
- улучшена обработка файлов с не правильными названиями
- улучшена обработка уже оптимизированных картинок
- улучшена обработка списка картинок
- поправлен баг с GetFields
- Администраторам: Убедитесь в наличии прав на редактирование и чтение у всех файлов /upload
- улучшена поддержка php5.3
- Установить модуль в административной панели
- Установить через консоль jpegoptim, optipng, gs, svgo, gifsicle
- Перейти в настройки модуля
- Указать пути до: jpegoptim, optipng, ps2pdf, svgo, gifsicle и сохранить
- Активировать нужные модули
- Поблагодарить автора

- Использовать.
- Ubuntu/Debian: sudo apt-get install jpegoptim
- Centos/BitrixVM: sudo yum install jpegoptim
- Ubuntu/Debian: sudo apt-get install optipng
- Centos/BitrixVM: sudo yum install optipng
- Centos/BitrixVM: sudo yum install ghostscript
- Debian/Ubuntu: sudo apt-get install ghostscript
- Alpine: sudo apk add ghostscript
- Arch Linux: sudo pacman -S ghostscript
- Kali Linux: sudo apt-get install ghostscript
- Fedora: sudo dnf install ghostscript
- OS X: sudo brew install ghostscript
- Raspbian: sudo apt-get install ghostscript
- установить node.js 20+
- npm install -g svgo
- переместить svgo в /usr/lib/node_modules
- для svgo сделать симлинк: ln -s /usr/lib/node_modules/svgo/bin/svgo /usr/bin/svgo
- для node.js тоже сделать симлинк в папку /usr/bin
- Centos/BitrixVM: sudo yum install gifsicle
- Debian/Ubuntu: sudo apt-get install gifsicle
- Centos/BitrixVM: sudo yum install libwebp-tools
- Debian/Ubuntu: sudo apt-get install webp
- поставить галку на активности
- выбрать нужный алгоритм из phpWebp и cwebp (мы рекомендуем phpWebp, он сжимает в 10-15 раз лучше, но чуть дольше)
- указать качество, мы рекомендуем ставить 80 (+/-10)
- конвертер не удаляет исходные файлы, а создает новые (папка: /upload/resize_cache/webp)
- указанную выше папку можно спокойно удалить, тогда модуль пересоздаст webp-файлы
- алгоритм phpWebp использует расширение GD
- алгоритм cwebp использует расширение CWebP (https://developers.google.com/speed/webp/docs/using)
- при конвертации вызываются события: OnBeforeConvertImage, OnBeforeConvertImageWebp и OnAfterResize
| Важно: модуль использует серверные утилиты. Необходимо, чтоб на сервере они были установлены. |
| Если у вас возникли сложности, пишите нам в техподдержку, постараемся вам помочь. |
Поблагодарить автора
| Коллеги, в связи с продолжающимся кризисом с 23 апреля 2020 года для всех бесплатных модулей, бесплатная техническая поддержка упразднена. Вам нужно понимать, что каждое ваше обращение занимает время специалиста. Просим проявить понимание и не нагружать службу просто так. На многие ваши вопросы может ответить любой другой специалист по битриксу. |
Техническая поддержка осуществляется сообществом пользователей бесплатных модулей.
Автор может вам ответить по след. контактам.
Контакты: support@dev2fun.com или https://t.me/dev2fun_support
Сроки на ответ отсутствуют.
Правила для письма:
- В теме письма необходимо указать ID модуля
- В теле письма необходимо указать суть проблемы и описать ваши действия, которые к ней привели.
- Приложить скриншоты.
- Прислать доступы до админки и фтп (желательно)
Для покупки товара в нашем интернет-магазине выберите понравившийся товар и добавьте его в корзину. Далее перейдите в Корзину и нажмите на «Оформить заказ» или «Быстрый заказ».
Если оформляете быстрый заказ: напишите ФИО, телефон и e-mail. Вам перезвонит менеджер и уточнит условия заказа. По результатам разговора вам придет подтверждение оформления товара на почту или через СМС. Теперь останется только ждать доставки и радоваться новой покупке.
Оформление заказа в стандартном режиме выглядит следующим образом. Заполняете полностью форму по последовательным этапам: адрес, способ доставки, оплаты, данные о себе. Советуем в комментарии к заказу написать информацию, которая поможет курьеру вас найти. Нажмите кнопку «Оформить заказ».
Оплачивайте покупки удобным способом. В интернет-магазине доступно 3 варианта оплаты:
- Наличные при самовывозе или доставке курьером. Специалист свяжется с вами в день доставки, чтобы уточнить время и заранее подготовить сдачу с любой купюры. Вы подписываете товаросопроводительные документы, вносите денежные средства, получаете товар и чек.
- Безналичный расчет при самовывозе или оформлении в интернет-магазине: карты МИР. Чтобы оплатить покупку на сайте, система перенаправит вас на сервер платежной системы. Здесь нужно ввести номер карты, срок действия и имя держателя.
- Электронные системы при онлайн-заказе: ЮMoney. Для совершения покупки система перенаправит вас на страницу платежного сервиса. Здесь необходимо заполнить форму по инструкции.
- Безналичная оплата на наш расчетный счет по выставленному счету.
Экономьте время на получении заказа. В интернет-магазине доступно 4 варианта доставки:
- Электронная поставка - все необходимые сведения о лицензии, праве пользования, кодах, ключах и др. высылаются покупателю на его e-mail.
- Курьерская доставка. Когда товар будет отправлен с нашего склада, Вам придет уведомление. В день доставки с Вами заблаговременно свяжется курьер для уточнения времени и деталей доставки. Доставка производится "до двери". Осмотрите упаковку на целостность и соответствие указанной комплектации.
- Постамат. Когда заказ поступит на точку, на Ваш телефон или e-mail придет уникальный код. Заказ нужно оплатить в терминале постамата. Срок хранения — 3 дня.
- Доставка Почтой России. Когда заказ придет в отделение, на Ваш адрес придет извещение о посылке. Перед оплатой Вы можете оценить состояние коробки: вес, целостность. Вскрывать коробку самостоятельно Вы можете только после оплаты заказа. Один заказ может содержать не больше 10 позиций и его стоимость не должна превышать 100 000 р.
Дополнительная информация.
Изучите полный алгоритм продления лицензий на модули 1С-Битрикс: Маркетплейс, включая активацию льготных купонов. Мы детально разбираем все условия: обязательный 30-дневный срок для сохранения максимальной выгоды, пропорциональное ценообразование (12,5%, 25%, 50% от цены модуля) и ограничение по минимальной сумме в 500 рублей. Этот гайд поможет вам эффективно планировать бюджет и гарантировать актуальность вашего проекта.