[tinyCompressor] Автоматическая оптимизация и сжатие файлов
Что делает данный компонент?
Оптимизация изображения для сайта — это уменьшение объема изображения без видимой потери качества.
При загрузке файла через файловый менеджер, ТВ-поле в ресурсе файла изображения (jpg/png) и при создании превью изображения — он автоматически его оптимизирует.
Сжатие PDF-файлов — уменьшает размер загружаемых PDF-файлов через файловый менеджер, ТВ-поле.
Все работает в автоматическом режиме. Перед использованием посмотрите системные настройки компонента. По умолчанию, включено только сжатие превью. Для изображений размером менее 5MB указывать ключ к сервису TinyPNG не нужно.
Что использует?
Для оптимизации изображения используется доработанный API-компонент к сервису TinyPNG. Компонент позволяет бесплатно и без учета загружать изображения размером до 5MB. Для использования загрузки на большие размеры, придется получить ключ к API на сайте сервиса.
Для сжатия PDF-файлов используется API-компонент к сервису ILovePDF. Для использования необходимо получить ID-проекта и секретный ключ в личном кабинете сервиса.
Интеграция:
Проект на GitHub.com
Оптимизация изображения для сайта — это уменьшение объема изображения без видимой потери качества.
При загрузке файла через файловый менеджер, ТВ-поле в ресурсе файла изображения (jpg/png) и при создании превью изображения — он автоматически его оптимизирует.
Сжатие PDF-файлов — уменьшает размер загружаемых PDF-файлов через файловый менеджер, ТВ-поле.
Все работает в автоматическом режиме. Перед использованием посмотрите системные настройки компонента. По умолчанию, включено только сжатие превью. Для изображений размером менее 5MB указывать ключ к сервису TinyPNG не нужно.
Что использует?
Для оптимизации изображения используется доработанный API-компонент к сервису TinyPNG. Компонент позволяет бесплатно и без учета загружать изображения размером до 5MB. Для использования загрузки на большие размеры, придется получить ключ к API на сайте сервиса.
Для сжатия PDF-файлов используется API-компонент к сервису ILovePDF. Для использования необходимо получить ID-проекта и секретный ключ в личном кабинете сервиса.
Интеграция:
- Проведена интеграция в minishop2 (msGallery)
- Проведена интеграция в phpThumb (phpThumbOn/phpThumbOf)
- Проведена интеграция в MIGX
Проект на GitHub.com
Комментарии: 79
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
на
Кстати:
Modx 2.5.8-pl
Php 5.6
И видимо понял в чем проблема была: расширение было JPG, т.е. заглавными буквамиUPD: Хотя нет, Вот такое название не прокатило: «DSC04858.jpg»
А когда переименовал, то все нормально
Перед тем как использовать на всем каталоге, попробуйте на папке с небольшим количеством файлов.
Внимание! Если у Вас слабый или ограниченный сервер или канал, то возможен завершение скрипта по таймауту выполнения, установленного конфигами сервера. Тогда используйте его по папкам, а не сразу огромную папку с 3500 файлов.
Не забудьте указать ключ к ILovePDF, если планируете сжимать PDF.
Если хотите сжать превью, то это можно сделать без этого скрипта — удалите их из папки хранения и они создадутся заново уже сжатыми.
Настройка tinycompressor_tinypng_upload_enable включена.
Интеграция с галереей ms2Gallery была бы очень кстати. Скажите, пожалуйста, когда планируете реализовать? Готов спонсировать! Сообщите, пожалуйста, по стоимости доработки.
Дмитрий, интеграция с ms2Gallery стоит в списке задач. Пока по срокам с ориентировать не могу. Конец года был очень напряженным и сытным на работу. До 29 января у меня всё расписано, к сожалению. Если появится свободное время, то постараюсь реализовать эту функцию. Компонент ms2Gallery является проприетарным(платным) попрошу у Василия часть кода загрузки изображений или хотя бы описание его работы.
Полная картинка тоже.
prntscr.com/l2mb94
такая ошибка выходит после установке в установщике? помогите
1. Дождитесь обновления — ошибка будет устранена.
2. Внесите изменения в указанный файл заменив строку 270
на
И строку 277
на
Столкнулся с такой штукой: стоит компонент FastUploadTV, в источнике файлов так:
В настройках TV так:
Так выводит ошибку – не может найти файл. Если дополнить строку ~124 tinycompressor.class.php
на такую:
То всё хорошо.
Либо в плагине перед ~13 строкой
добавить строчку (не уверен в корректности, но вроде)
Подскажите, что можно сделать?
1. Проверьте наличие строки в файле /core/model/phpthumb/phpthumb.class.php'
2. Очистите кэш изображений ms2Gallery.
3. Включите сжатие при загрузке в настройках.
3. Пробовал и со сжатием и без него (для меня важны хорошо сжатые превью, сжатие самого загружаемого файла значение не имеет).
2. Что такое кэш изображений и как его очистить — не знаю. Пробовал следующим образом: удалял конкретное фото из галареи и загружал его заново.
Сейчас пробовал из консоли запускать скрипт для перегенерации изображений ms2Gallery, выдал следующую ошибку:
где-то путь сбивается и дважды друг на друга накладывается. До установки tinycompressor скрипт работал. Подскажите, где искать ошибку с путём?
1. Попробуйте не генерировать превью через скрипт, а просто загрузить страницу. Не забудьте очистить кэш превью.
2. Закомментируйте строчки 132-150 кода в файле /var/www/data/site.ru/core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php. Это строчки переименования файла.
вместо
сделал
теперь приложение заработало. Остались ещё конфликты между разными источниками картинок MS2 Images и MS2Gallery Images если в них указаны разные размеры превью, то используются только MS2Gallery Images. Буду разбираться.
P.S.: использую ms2Gallery 2.0.6-pl
Или я что-то не так сделал?
При загрузке последней картинки создалась папка (304) /ads/bazads/304 в которой лежит картинка, а компрессор ищет файл в /bazads/. Если я правильно понимаю, не хватает после 304 /. Как это исправить?
В файле core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php
это
заменил на это
Теперь работает, но сервис после phpTrumbOn картинки меньше не делает.
PageSpeed Insights ругается, что картинки можно сжать еще. В итоге компонент мне не подходит. Буду пробовать OptiPic
TinyPNG — это сервис сжатия изображений без видимой потери качества.
Как такое может быть? :)
В файле /core/model/phpthumb/phpthumb.class.php
Найдите строку: Если нет ниже неё строки: Добавьте её. Очистите кэш и попробуйте.
Установил tinycompressor с функцией сжатия файлов при загрузке. Первое время все работало. Потом нужно было восстановить из бэкапа сайт.
Стал получать ошибку:
Вот скрин ошибки в админке:
Права все поменяли на директории и файлы — 775 и 664, соответственно. Ключ tinyPNGApiKey прописан в настройках. Некоторые файлы «проскакивают» и удачно сохраняются в директории оптимизированными, но у большинства — ошибка.
Пробовал установить tinycompressor на «чистой» версии. Такая же ошибка. Подскажите, пожалуйста, как можно решить эту проблему.
Уже обсуждалась эта проблема.
Закомментируйте строчки 136-150 в файле core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php
Не работает компонент с ms2Gallery в логах пишет
Нормальный путь должен быть таким /assets/images/resources/26/medium/ buildings-1207824-1920.jpg
Пропускает /
Исходное имя файла, которое загружаете через галерею, какое?
Я загрузит только что файл 111.jpg получил такой ответ
http://prntscr.com/nyham9
И может есть возможность сделать, чтобы была быстрая возможность включения и отключения плагина, т.к. иногда сам сжимаешь в Фотошопе как надо картинки и не хотелось бы, чтобы тини ещё вмешивался…
prntscr.com/nzoynk
В логах
prntscr.com/nzoys5
Если кто-то может помочь, порыться, что не так, какие мои настройки сообщить? Настройки сниппета, или?..
MODX Revolution 2.6.3-pl
Компонент последней версии 2.0.2-beta
Проверил размер превью продукта «до» и «полсе» перегенерации превью из вкладки «галерея».
«До» было меньше (20кб), чем стало «после» (23кб). Если загрузить «после» вручную на сервис tinyPNG, то файл сжимается в 2 раза (49%).
В phpthumb.class.php нужная сточка присутствует. При перегенерации срабатывает только 1 событие из плагина: OnFileManagerFileCreate (наверное так и должно быть, но всё равно не сжимаются картинки)
Оригинал картинки был около 700 кб (т.е. меньше 5 мб).
core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php
Строка 98.
$container уже содержит base_path.
Плюс, между $container и $file['name'] должен быть разделитель /.
После исправления, всё заработало. В личном кабинете TinyPNG появилась информация о количестве сжатых файлов.
Но судя по моему комментарию должно быть как-то так: