Унифицировать картинки
Добрый день.
Есть масса картинок на сайте. При необходимости можно скачать на компьютер всю папку с каталогами, а после переработки закинуть обратно на сайт.
Картинки представляют собой предметы на белом фоне. Формат jpg.
Проблема: на некоторых картинках изображение почти до краев канвы, на некоторых процентов 60-70 занимает. На многих смещено к одному из краев.
Задача: сделать так, чтобы полезное изображение на каждой картинке занимало 90% по большему размеру, и отцентрировать по обеим осям.
Алгоритм такой:
1. Берем картинку и смотрим размер. Например, 1600х1400 пикселей.
2. Вычисляем размер полезного изображения, сканируя от краев по горизонтали и вертикали до нахождения первого небелого пикселя с каждой из 4 сторон. Допустим, обнаружили, что полезное изображение на ней имеет размер 1200х600 пикселей.
3. Вычисляем коэффициент масштабирования, сравнивая размеры по горизонтали и вертикали: mw=1600*0.9/1200 = 1.2; mh=1400*0.9/600=2.1. m=min(mw, mh) = 1.2.
4. Увеличиваем полезное изображение до размеров 1200*1,2 х 600*1,2 = 1440х720 пикселей.
5. Размещаем его точно по центру канвы (ее размер не менять).
6. Перезаписываем файл с тем же именем (либо создаем полную копию исходной структуры в другой папке).
7. Берем следующий файл. Рекурсивно проходим все подпапки.
Поскольку картинок около 10 000, нужно решение, позволяющее все это прогнать в полностью автоматическом режиме. Скриптом в фотошопе, скриптом на php, отдельно написанным приложением под винду - неважно, как. Нужно именно работоспособное эффективное решение. Обработаю с его помощью сам потом, и буду продолжать использовать дальше при добавлении новых товаров на сайт.
Если решение будет самописное, нужно добавить опцию для задания процента заполнения канвы (может быть не 90%, а 80% или 85% окажется более красивым, например).