ImageMagick вращает и обрезает пакетные изображения - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь использовать ImageMagick для эмуляции функции поворота и обрезки Gimp, чтобы использовать ее для пакета изображений.

Что бы я сделал в Gimp, это чтобы открыть изображение .jpg, используйтеинструмент поворота со следующими параметрами: 0,2 °, кубическая интерполяция и обрезка с исходным соотношением изображений. После этого, просто еще одним кадрированием вокруг границ изображения, процесс завершен, и я могу сохранить изображение как .png

Я не использую Gimp, потому что встроенная процедура gimp-drawable-transform-rotate-default onlyпринимает радианы с двумя десятичными знаками. Я попытался найти способ отредактировать этот procudere и создать свой собственный, но я не смог этого сделать

Я также предложил использовать ImageMagick, потому что пакет очень большой (50k + изображений), поэтомуМожете ли вы помочь мне с консольной командой, чтобы подражать тому, что я буду делать с Gimp? В частности, важной частью является кадрирование с исходным отношением изображения

Редактировать:

При повороте изображения, если ° не 90-180-270 и т. Д., Размеризображения увеличивается, и поэтому новые пиксели должны быть созданы. Обрезка должна выполняться следующим образом:

  1. Удалить все пиксели, добавленные во время поворота, чтобы заполнить пробелы
  2. Конечное соотношение должно быть как можно ближе к исходному
  3. То, что должно быть обрезано (ofcrop должен быть отцентрирован), которое присутствовало в исходном изображении, должно быть как можно меньше

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

Процедура, которую я описал для Gimp, уже сделала все, но она работает только на одном изображении за раз

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Вот, пожалуй, лучший подход (с использованием ImageMagick 6). Вместо того, чтобы полагаться на значение нечеткости для обрезки черной границы повернутого изображения, следует рассчитать величину, которую необходимо стричь с каждой стороны, учитывая угол поворота и размеры изображения. (Синтаксис Unix)

Ввод (оригинал)

enter image description here

angle=0.2
convert barn.jpg -background black -rotate $angle barn_rotated.png


Поворот изображения:

enter image description here

WxH=`convert barn.jpg -format "%wx%h" info:`
ww=`echo "$WxH" | cut -dx -f1`
hh=`echo "$WxH" | cut -dx -f2`
aspect="${ww}:${hh}"
xshave=`convert xc: -format "%[fx:ceil($hh*sin($angle*pi/180))+1]" info:`
yshave=`convert xc: -format "%[fx:ceil($ww*sin($angle*pi/180))+1]" info:`
convert barn_rotated.png -shave ${xshave}x${yshave} \
-gravity center -crop "$aspect" +repage barn_rotated_shaved_cropped.png


Бритые и обрезанные в аспект изображения:

enter image description here

Еслииспользуя ImageMagick 7, замените конвертацию магией.

0 голосов
/ 04 октября 2019

Вот пример использования ImageMagick 6.

Сначала я получаю и распечатываю входное соотношение сторон. Затем я повернул его на 0,2 град. Затем я обрезаю его, чтобы удалить черную рамку. Затем я обрезаю его до входного соотношения сторон и печатаю выходное соотношение сторон. Синтаксис Unix ниже.

Ввод:

enter image description here

aspect=`convert barn.jpg -format "%w:%h" info:`
convert barn.jpg -format "input_aspect=%[fx:w/h]\n" -write info: -background black -rotate 0.2 barn_rotated.png

input_aspect=1.33779


enter image description here

convert barn_rotated.png -fuzz 16% -define trim:percent-background=0% -trim +repage \
-gravity center -crop "$aspect" +repage -format "output_aspect=%[fx:w/h]\n" -write info: barn_cropped.jpg

output_aspect=1.33969


enter image description here

При использовании ImageMagick 7 вы можете сделать все это в одной командной строке:

magick barn.jpg -set option:aspect "%w:%h" -format "input_aspect=%[fx:w/h]\n" -write info: \
-background black -rotate 0.2 +write barn_rotated.png \
-fuzz 16% -define trim:percent-background=0% -trim +repage \
-gravity center -crop "%[aspect]" \
+repage -format "output_aspect=%[fx:w/h]\n" -write info: \
barn_cropped.jpg


Значение fuzz будет зависеть от изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...