Я использую ImageMagick для Perl
use Image::Magick;
Я написал функциональный код для выполнения всех необходимых задач, таких как изменение размера, миниатюра, чтение размеров, обрезка, обрезка по центру.
Я делаюу меня есть требование, чтобы все фотографии были в альбомной ориентации, поэтому я выбрасываю любые изображения с высотой, превышающей или равной ширине.
Проблема, с которой я борюсь, это обрезка перед изменением размера.Фотографии должны иметь соотношение сторон 4: 3.Некоторые фотографии имеют новый формат 16: 9 или могут быть обрезаны перед отправкой на сервер, что приводит к перекосу на экране.Перед изменением размера я хотел бы обрезать изображение так, чтобы оно было ближе всего к 4: 3.Например, 800/600 в порядке, но 802/600 обрезала бы центр до 800/600.
Я буду изменять размеры всех фотографий, независимо от размера обрезки, до максимального сохраненного изображения 800/600, но это не имеет значения.Поскольку я могу читать измерения высоты и ширины заранее, возможно, существует алгоритм для вычисления наиболее близкого соответствия.Мне действительно нужна помощь в получении новых размеров для обрезки, а не в ImageMagick, если только в ImageMagick нет функции, которая может сделать это для меня.
Однако мне не удалось найти тот, который делает.