#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