Изменение размера изображения

Проблема большой фотогалереи возникла на корпоративном портале от 1С-Битрикс. За более чем год использования ограничения на максимальный размер файла размер папки /upload/ содержащей все загруженные файлы стал более 20 GB.

Особенностью данной задачи служило, то что заранее неизвестны пути к изображениям фотогалереи. Ниже приведено решение, которое будет работать на всех проектах вне зависимости от системы управления контентом.

Скрипт делает следующее:
1) Рекурсивно обходит все файлы в директории из которой запущен;
2) Если файл имеет расширение gif, png или jpeg, размер более 500 Kb, высоту более 850px и ширину более 640 px сжимает его пропорционально до этих параметров.

Требования:

1) На сервере должна быть установлена библиотека gd для php.
2) Если файлов много, сжатие займет значительное время, поэтому придется запускать из консоли, следовательно потребуется ssh.
3) У скрипта должно быть право на изменение изображений.

Скрипт с комментариями приведен ниже:

Результат работы оказался таким: скрипт работал чуть более 4х часов, изменил чуть более
20 000 изображений. Размер папки /upload/ стал 5 Gb, т.е. уменьшился в 4 раза!

Скачать скрипт можно здесь.