ImageMagick - изменить размер изображения до квадратного

Я только что начал работать с ImageMagick. В настоящее время я пытаюсь преобразовать изображение из файла почти квадратного размера (1411 x 1486) или аналогичных размеров в квадратную форму, например 1024x1024, к сожалению, функция изменения размера, похоже, не изменяет размер холста, поэтому я продолжаю получать число вроде 1024x982. Мне интересно, есть ли способ преобразовать не очень квадратное изображение в квадратное изображение, используя их библиотеки С++.

Причина, по которой они не квадратные, заключается в том, что я конвертирую GPS-позиции в UTM и получаю квадратную форму, но, к сожалению, из-за кривой земли они обычно примерно на 400 м от квадратной формы... если вам интересно.


person Craig    schedule 25.01.2010    source источник


Ответы (3)


Вы можете добавить ! к вашей геометрии типа "1024x1024!" на изменение размера или создать явную геометрию для метода изменения размера. Вам также может понадобиться установить флаг аспекта через ! должен сделать это (я читал, что некоторым людям нужно было это сделать, но у меня нет для вас объяснений по этому поводу).

person Joshua Smith    schedule 25.01.2010

Использование 1024x1024! не добавит миниатюру.

Вот ссылка на то, что вам нужно http://www.imagemagick.org/Usage/thumbnails/#pad

Командная строка по ссылке (для предотвращения гниения ссылки):

convert -define jpeg:size=200x200 hatching_orig.jpg -thumbnail '100x100>' \
          -background skyblue -gravity center -extent 100x100 pad_extent.gif
person Dex    schedule 16.08.2014
comment
Спасибо! Это сделало то, что мне было нужно: - person Eduardo Sztokbant; 30.04.2017

Я сделал, как сказал Джошуа. это работало для одного изображения. (спасибо Джошуа)

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

convert -resize 1024x1024! *.png

не сработало


поэтому здесь есть пример команды для рабочего образца.

mkdir scaled
for %%x in (*.png) do convert -resize 1024x1024! %%x .\scaled\%%x
person ufukgun    schedule 24.02.2010
comment
допустим ли %%x синтаксис Bash? Разве это не должно быть что-то вроде $x? И вы используете тот же выходной файл, что и входной? Если это так, вы должны использовать mogrify, а не конвертировать, что в этой ситуации не работает... - person luca; 04.05.2010
comment
в окнах с использованием %%x все в порядке. ---- по второму вопросу есть другая проблема. который вы даете выходному файлу, становится входным файлом на более поздних этапах, поэтому этот процесс длится вечно. вместо этого лучше поместить их в папку, и я сейчас отредактирую ответ. - person ufukgun; 05.05.2010
comment
@luca Если вы хотите бахнуть, вы бы сделали for x in *.png; do convert -resize '1024x1024!' $x ./scaled/$x; done - person v010dya; 07.12.2016
comment
попробуйте mogrify для пакетной обработки вместо конвертации. - person saurabheights; 18.01.2017