Есть для тебя решение по сжатию на основе API Tinypng
И так, что умеем:
1. Умеем работать только из консоли (CLI)
2. Умеем работать со списком API ключей, берем из файла и перебираем. Если один ключ закончился, берем следующий. Если все закончились - прекращаем работу!
3. Умеем формировать лог в CSV для дальнейшего удобного анализа в Excel
Как пользоваться?
1. Качаем архив
Для просмотра ссылки Войди или Зарегистрируйся
2. Распаковываем содержимое в корень
3. В файле
keys.txt суем свои API ключи (каждый ключ новой строкой)
4. Даем права на выполнение:
chmod +x tinify.php
5. При необходимости правим в файле
tinify.php первой строкой путь к PHP:
#!/usr/bin/php
6. Запускаем:
./tinify.php <path>
Где
<path> это путь к каталогу, относительно расположения скрипта, в котором необходимо обработать изображения.
Например, если вы поместили папку со скриптом в корень симплы и необходимо обработать каталог products с изображениями товаров, то запускаем так:
./tinify.php ../files/products
7. Запуск:
./tinify.php -h выведет хелп
Принцип работы с ключами
Скрипт читает
keys.txt и берет от туда ключи. При запуске берет первый ключ, пробуем им работать, если все ок, переходит к следующему найденному изображению в каталоге. Если обработка изображения не прошла, меняет ключ на следующий и пробует опять этот же файл с изображением. Если не один из приведенных ключей более не может работать, работа скрипта завершается с уведомлением в консоле.
Принцип работы оптимизатора
Скрипт ищет в каталоге, который был указан ему при запуске, все файлы изображений jpg, jpeg, png. Скрипт проверяет наличие в этом каталоге подкаталога
.tinypng и если такого нет - создает. Для каждого найденного файла с изображением скрипт ищет файл с аналогичным именем + окончанием
.tiny в подкаталоге .
tinypng. Если такой файл найден, скрипт читает его содержимое. В нем хранится размер изображение (число в байтах). Если такого файла в подкаталоге
.tinypng нет, или размер изображения в нем меньше фактического файла с изображением, то происходит сжатие файла. Новый сжатый файл заменяется старым, так же в подкаталоге
.tinypng создается (или перезаписывается) файл с аналогичным названием + окончание
.tiny где указывается новый размер сжатого файла.
Тем самым, с каждым запуском скрипта обработке поддаются только те файлы, которые ранее не сжимались.
По окончании работы скрипта создается подробный лог файл в CSV для удобного анализа в Excel
Скорость работы скрипта на моем тестовом хосте ~50 изображений в минуту.
Могу дать также скрипт на баше