Их много, несколько тысяч, выкачивать все, пережимать и заливать обратно - то ещё веселье.
Используй серверное кеширование картинок:
1. Исходное изображение в идеальном качестве и размере загружается на сервер. Причем желательно в папку, недоступную в паблике.
2. При выводе изображения в паблике нужно указать параметры:
- ссылку на иходное изображение (или идентификатор в БД или просто путь к файлу);
- размер, качество и режим ресайзинга (inset, outbound), в котором нужно это изображение
- (опционально) имя сгенерированного файла или префикс/суффикс и имени.
<img src="<?= $im->getUrl($path, $width, $height, $quality, $resizeMode)?>">
3. В кеш-папку, доступную в паблике, генерируется изображение нужного размера и качества.
В названии файла присутствует хеш параметров, указаных при генерации изображения. Например,
$sFileHash = md5($filePath . $width . $height . $resizeMode . $quality . filemtime($filePath));
В итоге, получается такой сниппет
<img src="/images/_cache/im/f0/f0f718_myOriginalFileName.jpg">
Где,
_cache - общая папка для кеша,
im - подпапка для конкретного модуля/компонента, который выполняет генерацию
f0f718 - уникальный хеш изображения
myOriginalFileName - может быть любым названием.
Можно спрятать оригинальное название файла, или добавить параметры размера и качества: f0f718_800x600x40.jpg
Можно вообще сделать как на большинстве новостных сайтов - вывести параметры размера, качества, режима в параметры урла картинки.
Меняя параметры урла в браузере, получаешь сгенерированную картинку нужного размера и качества.
Хеш в имени файла позволяет генератору избежать повторного генерирования файла,
когда в следующий нужно будет вывести тот же файл с теми же параметрами размера и качества.
В настройках генератора также указывается, как долго хранить файлы в кеше.
----
Как это реализовать
1. Установить imagemagick
Если требуется конвертировать pdf в изображения, то и ghostscript в довесок
2. Для удобства работы с imagemagick установить imagine
Для просмотра ссылки Войди или Зарегистрируйся
3. Сделать компонент, выполняющий кеширование.
Можно взять за образец вот этот, написанный под yii2
Для просмотра ссылки Войди или Зарегистрируйся
Все вышесказанное реализуется парой функций в 150 строк ).
Само собой, этот базовый генератор картинок можно обвесить дополнительными параметрами -
добавление вотермарка на картинку, поворот картинки, поменять генерацию названия и т.д.
P.S. Да, и можно еще сделать как в Magento 2 - предварительную генерацию картинок каталога.
Т.е. в параметрах каталога задаются параметры всех вариантов картинок товара
- размер и качество основного изображения товара,
- размер и качество превьюшки в листинге товара,
- размер и качество еще какой-то там превьюшки в другом месте
и т.д.
Далее нажимаем кнопку "сгенерировать кеш картинок". Скрипт тупо обходит все товары и для каждой картинки товара запускает маджентовский аналог
$im->getUrl($path, $width, $height, $quality, $resizeMode)
из примера выше.
Таким образом все нужные картинки для вывода каталога генерируются предварительно.