{"id":23181339,"url":"https://github.com/darkfriend/dev2fun.imagecompress","last_synced_at":"2026-04-05T23:08:51.766Z","repository":{"id":49117133,"uuid":"146214408","full_name":"darkfriend/dev2fun.imagecompress","owner":"darkfriend","description":"Оптимизация картинок - автоматически и без сторонних сервисов для 1С-Битрикс","archived":false,"fork":false,"pushed_at":"2024-10-20T17:37:34.000Z","size":305,"stargazers_count":38,"open_issues_count":0,"forks_count":10,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-10-20T21:16:54.188Z","etag":null,"topics":["avif","bitrix","gif","image-compression","jpeg","module","optimization","pdf","png","solution","svg","webp"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/darkfriend.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":["https://paypal.me/darkfriend","https://www.tinkoff.ru/cf/36wVfnMf7mo","https://yoomoney.ru/to/410011413398643"]}},"created_at":"2018-08-26T20:34:01.000Z","updated_at":"2024-10-20T17:32:53.000Z","dependencies_parsed_at":"2023-11-25T18:28:14.207Z","dependency_job_id":"553c9fe1-b1b8-4b09-ac88-928a90580ed1","html_url":"https://github.com/darkfriend/dev2fun.imagecompress","commit_stats":null,"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkfriend%2Fdev2fun.imagecompress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkfriend%2Fdev2fun.imagecompress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkfriend%2Fdev2fun.imagecompress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkfriend%2Fdev2fun.imagecompress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darkfriend","download_url":"https://codeload.github.com/darkfriend/dev2fun.imagecompress/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230238227,"owners_count":18194988,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avif","bitrix","gif","image-compression","jpeg","module","optimization","pdf","png","solution","svg","webp"],"created_at":"2024-12-18T08:15:15.902Z","updated_at":"2026-02-23T20:24:21.114Z","avatar_url":"https://github.com/darkfriend.png","language":"PHP","readme":"# Оптимизация картинок и конвертация в webp/avif - автоматически и без сторонних сервисов\nМодуль, который делает оптимизацию jpeg/png/svg/gif картинок и pdf-файлов для 1С-Битрикс.\nТакже модуль делает конвертацию jpeg/png картинок в webp/avif для 1С-Битрикс.\n\nМодуль доступен в [маркетплейсе битрикс](http://marketplace.1c-bitrix.ru/solutions/dev2fun.imagecompress/).\n\n## Что оптимизирует модуль:\n* картинки jpeg\n* картинки png\n* файлы pdf\n* картинки gif\n* картинки svg\n\n## В какие форматы происходит конвертация\n* webp\n* avif\n\n## Что конвертируется в webp и/или в avif:\n* картинки jpeg\n* картинки png\n\n## Режимы конвертаций:\n* hitConvert - конвертация \"на лету\" при запросе картинки или её ресайза.\n* postConvert - конвертация \"на лету\" перед показом страницы. Кэшируется.\n* lazyConvert - ленивая (отложенная) конвертация. Конвертация происходит постепенно в фоне. Кэшируется. **Рекомендуется!**\n\u003e можно использовать hitConvert+postConvert\n\n## Преимущества модуля:\n\n* оптимизация картинок\n* конвертация картинок\n* модуль использует рекомендуемые google: jpegoptim, optipng, gs, svgo, gifsicle, cwebp, avif\n* сжатие картинок в 5-10 раз\n* пройдете анализ PageSpeed Insights\n* автоматическая оптимизация (на лету)\n* оптимизация картинок при ресайзе (на лету)\n* автоматическая конвертация картинок в webp (на лету или в фоне)\n* автоматическая конвертация картинок в avif (на лету или в фоне)\n* в режиме lazyConvert не создаются дубли картинок\n* не использует сторонние сервисы\n* не использует curl\n* почти не нагружает сервер\n* оптимизирует без грязи\n* освободится значительное кол-во места на диске (в 5-10 раз!)\n* progressive jpeg\n* возможность оптимизации через консоль (в фоне)\n* гибкие настройки\n* вкл/выкл автоматическое уменьшение размера картинок. Можно задать максимальный размер и все картинки которые больше будут автоматически уменьшаться до этого размера.\n* учитывает ориентацию картинок (вертикальные остаются вертикальными, горизонатльные остаются горизонтальными)\n* оптимизация картинок сохраняет оригинальные права на файлы\n* оптимизация картинок сохраняет оригинальное время создание\n\n## Поддержка оптимизации при:\n* загрузке картинки превью и детальной у элементов\n* загрузке картинки в свойство FILE Image у элементов\n* загрузке картинки в разделы элементов\n* загрузке картинки в модуль main\n* ресайзе картинки (в т.ч. кэшируемой)\n\n## Что также идет:\n* вкл/выкл оптимизация у элементов/разделов/ресайза\n* можно установить качество jpeg-файлов при сжатии\n* можно установить степень сжатия у png-файлов\n* вкл/выкл progressive jpeg\n* можно сжать все имеющиеся картинки прямо из админки\n* настройки для конвертации в webp\n* агенты\n  * агент конвертации картинок\n  * агент автоматической очистки истекшего кэша\n* выбор браузеров в которых выводятся webp/avif версии картинок\n* вкл/выкл проверки поддержки браузером webp/avif через заголовки\n\n## Консольный скрипт:\n* `/bitrix/modules/dev2fun.imagecompress/console/optimize.php` - cron/cli скрипт оптимизации картинок\n* `/bitrix/modules/dev2fun.imagecompress/console/convert.php` - cron/cli скрипт для конвертации картинок (из бд)\n* `/bitrix/modules/dev2fun.imagecompress/console/cache-delayed-delete.php` - cron/cli скрипт по авто-очистке истекшего кэша\n\n## ROADMAP\n* ~~0.5.x: будет добавлена конвертация картинок в webp~~\n* ~~0.6.x добавлен режим пост-конвертации~~\n* ~~0.8.x: будет добавлен режим lazyConvert~~\n* ~~0.11.x: смена расположения webp/avif версий и оптимизация~~\n* 0.12.x: \n  * будет переработана оптимизация картинок через UI\n  * будет улучшена первоначальная конвертация картинок\n  * будет добавлена возможность автоматически удалять неиспользуемые картинки (оптимизация места на жестком диске) \n* 0.13.x: будет добавлена возможность замены дублирующих картинок на символические ссылки (значительно освободит место на HDD)\n* 0.14.x: будет добавлена возможность выбора кастомного сервера оптимизации/конвертации + код для микросервиса, который вы сможете разместить в нужном месте.\n* 1.0.x: будет добавлена возможность оптимизаций и конвертаций по кастомным путям\n\n## Как установить\n*Рекомендуемая установка через маркетплейс битрикса. Ниже будет описана установка, через github*\n\n### Шаг1. Подготовка сервера\n*Лучше всего это доверить опытному программисту или системному администратору*\n\n#### Для оптимизации картинок\n* Установить jpegoptim для оптимизации jpeg-картинок\n* Установить optipng для оптимизации png-картинок\n* Установить gs для оптимизации pdf-документов\n* Установить svgo для оптимизации svg-картинок\n* Установить gifsicle для оптимизации gif-картинок\n* Убедиться в установке библиотеки GD\n* Убедиться в доступности функции exec (используется для вызова утилит) и доступности всех установленных утилит из-под php.\n\n#### Для конвертации картинок\n* Установить cwebp для конвертации в webp-картинки\n* Убедиться в установке библиотеки GD с поддержкой webp и avif (если нужен)\n* Убедиться в доступности функции exec (используется только для cwebp)\n\n### Шаг2. Установка модуля\n1. Клонируете/скачиваете репозиторий к себе\n1. Выбираете нужную кодировку и копируете оттуда папку dev2fun.imagecompress\n1. Кладете папку dev2fun.imagecompress в /bitrix/modules/\n1. Переходите на страницу `Marketplace-\u003eУстановленные решения`, находите модуль в списке и нажимаете установить\n1. Переходите на страницу настройки модуля\n1. Активируете нужные компоненты и указываете пути из шага1. Сохраняетесь\n1. Используете.\n\n### Шаг3. Настройка модуля\n* Перейти в раздел настроек модуля и активировать нужные функции\n\n### Миграции\n\u003e *Если вы только устанавливаете модуль, то миграции применять __НЕ НАДО__!*\n\u003e эти миграции служат для перехода с версии на версию, без необходимости переустановки модуля\n\n#### Шаги миграции\n1. делаете бэкап\n1. запоминаете, какая у вас версия модуля\n1. копируете и заменяете файлы модуля (обязательно в нужной кодировке!)\n1. копируете миграцию с вашей версии на новую в любое доступное место (например в корень сайта) и вызываете через браузер\n1. при успехе вы увидите \"x.x.x - Success\", где x.x.x - применяемая версия\n\n## Поддерживаемые события\n\n|  название события | передаваемые переменные  | описание |\n|---|---|---| \n| OnBeforeResizeImage | $intFileID - идентификатор файла  | Событие запускается перед началом оптимизации (до поиска файла в базе) |\n| OnBeforeResizeImageJpegoptim | \u0026$strFilePath - путь до файла,\u003cbr\u003e \u0026$quality - качество картинки,\u003cbr\u003e \u0026$params - дополнительные параметры  | Событие запускается перед началом оптимизации jpeg-картинок |\n| OnBeforeResizeImageOptipng | \u0026$strFilePath - путь до файла,\u003cbr\u003e \u0026$quality - степень сжатия картинки,\u003cbr\u003e \u0026$params - дополнительные параметры  | Событие запускается перед началом оптимизации png-картинок |\n| OnAfterResizeImage | \u0026$strFilePath - путь до файла | Событие запускается после оптимизации |\n| OnBeforeCheckWebpBrowserSupport | \u0026$supportBrowsers - массив поддерживаемых браузеров | Событие запускается перед проверкой браузера |\n| OnAfterCheckWebpSupport | $result - результат проверки на поддержку webp,\u003cbr\u003e обязательно сделайте `return $result;` | Событие запускается после всех проверок на поддержку webp |\n| OnBeforePostConvertImage | \u0026$arFiles - список файлов подлежащих конвертации (только в режиме postConvert)\u003cbr\u003eКэшируется | Событие запускается в режиме postConvert перед началом конвертации |\n| OnBeforePostConvertReplaceImage | \u0026$arFileReplace - список файлов подлежащих замене (только в режиме postConvert)\u003cbr\u003eНе кэшируется | Событие запускается в режиме postConvert перед началом замены текущих картинок на webp |\n| OnBeforePostConvertImage | \u0026$file - путь до файла перед началом его конвертации | Событие запускается в режиме postConvert перед началом конвертации файла в webp |\n\n## Donate\n\n|                   |                                                                    |\n|-------------------|--------------------------------------------------------------------|\n| Bank Card | [Visa/Mastercard/Mir/Other](https://www.tinkoff.ru/cf/36wVfnMf7mo) |\n| YooMoney          | [410011413398643](https://yoomoney.ru/to/410011413398643)                                                |\n| Webmoney WMR (rub) | R218843696478                                                      |\n| Webmoney WMU (uah) | U135571355496                                                      |\n| Webmoney WMZ (usd) | Z418373807413                                                      |\n| Webmoney WME (eur) | E331660539346                                                      |\n| Webmoney WMX (btc) | X740165207511                                                      |\n| Webmoney WML (ltc) | L718094223715                                                      |\n| Webmoney WMH (bch) | H526457512792                                                      |\n| PayPal            | [@darkfriend](https://www.paypal.me/darkfriend)                    |\n| Payeer            | P93175651                                                          |\n| Bitcoin           | 15Veahdvoqg3AFx3FvvKL4KEfZb6xZiM6n                                 |\n| Litecoin          | LRN5cssgwrGWMnQruumfV2V7wySoRu7A5t                                 |\n| Ethereum          | 0xe287Ac7150a087e582ab223532928a89c7A7E7B2                         |\n| BitcoinCash       | bitcoincash:qrl8p6jxgpkeupmvyukg6mnkeafs9fl5dszft9fw9w             |\n","funding_links":["https://paypal.me/darkfriend","https://www.tinkoff.ru/cf/36wVfnMf7mo","https://yoomoney.ru/to/410011413398643","https://www.paypal.me/darkfriend"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarkfriend%2Fdev2fun.imagecompress","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarkfriend%2Fdev2fun.imagecompress","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarkfriend%2Fdev2fun.imagecompress/lists"}