Вычисление нового размера изображения с использованием строки формата imagemagick и ширины / высоты

#imagemagick #image-scaling

#imagemagick #масштабирование изображения

Вопрос:

В веб-приложениях рекомендуется использовать атрибуты width и height для тегов img — это позволяет браузеру быстрее отображать страницу.

Если у меня есть ширина и высота изображения и строка формата imagemagick (т. Е. ‘300>’), как я могу получить размер, до которого будет изменено это изображение? Я надеюсь, что в imagemagick есть некоторые хуки / функции, которые позволили бы мне получить доступ к этой информации.

Я не хочу изменять размер или загружать изображение в память, я просто хочу знать, какими будут размеры.

По сути, мне нужна следующая функция:

определение get_image_size(ширина, высота, format_string)
 # ... магия здесь
возвращает [new_width, new_height]
конец

width, height = get_image_size(300, 400, '235x235!')
# вернет 235 и 235

width, height = get_image_size(300, 400, '700x700>')
# вернет 300 и 400

width, height = get_image_size(300, 400, '100x100')
# вернет 75 и 100

Комментарии:

1. Очевидное решение, похоже, использует спецификацию ( imagemagick.org/script/command-line-processing.php#geometry ) и реализовать функцию самостоятельно, выглядит не слишком сложно. Возможно, кто-то готов потратить на вас несколько часов своего свободного времени, если вы увеличите вознаграждение. Или вы переходите непосредственно к vworker.com и попросите кого-нибудь сделать это за 50 баксов или меньше.

Ответ №1:

Использование следующей convert команды ImageMagick дает то, что вы хотите. Это должно быть легко переведено в любой выбранный вами языковой API ImageMagick.

 $ convert -size 300x400 xc:white -resize '235x235!' info:- | cut -d  -f3
235x235
$ convert -size 300x400 xc:white -resize '700x700>' info:- | cut -d  -f3
300x400
$ convert -size 300x400 xc:white -resize '100x100' info:- | cut -d  -f3
75x100