2010-01-25 2 views
5

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

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

ответ

6

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

0

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

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

convert -resize 1024x1024! *.png 

не работал


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

mkdir scaled 
for %%x in (*.png) do convert -resize 1024x1024! %%x .\scaled\%%x 
+0

является %% х действительный синтаксис Bash? Разве это не должно быть что-то вроде $ x? И используете ли вы тот же выходной файл, что и входной файл? Если это так, вы должны использовать mogrify и не конвертировать, что плохо работает в этой ситуации ... – luca

+0

в окнах с использованием %% x в порядке. ---- для второго вопроса, есть еще одна проблема. который вы даете выходному файлу, становится входными файлами на последующих этапах, поэтому этот процесс выполняется навсегда. вместо того, чтобы помещать их в папку, это лучшая идея, и теперь я отредактирую ответ. – ufukgun

+0

@ luca Если вы хотите bash, вы будете делать 'for x in * .png; do convert -resize '1024x1024!' $ x ./scaled/$x; done' – v010dya

8

Использование 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 
+0

Спасибо! Это сделало то, что мне нужно: convert original.png -thumbnail '64x64>' -gravity center -background transparent -extent 64x64 thumbnail.png –

Смежные вопросы