Унифицировать картинки

Рафаэль16 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
14.06.2022

Добрый день.

Есть масса картинок на сайте. При необходимости можно скачать на компьютер всю папку с каталогами, а после переработки закинуть обратно на сайт.

Картинки представляют собой предметы на белом фоне. Формат 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% окажется более красивым, например).

Заявки фрилансеров