Как заложить круг с mogrify в одной команде
Я написал этот сценарий, и он работает нормально, но я хотел бы сделать все это за один шаг на лету, без дополнительного временного изображения.
объяснение: у меня много поврежденных файлов изображений, и я хочу нарисовать круг под каждым изображением. Для этого мне нужно создать временное изображение circle.png, а затем использовать "image DstOver", чтобы разместить его под каждым из изображений:
convert -size 200x200 xc:transparent -fill red -draw 'translate 100,100 circle 0,0 100,0' circle.png
mogrify -draw "image DstOver 0,0 0,0 'circle.png'" images/*.png
Что-то вроде:
mogrify -fill red -draw "DstOver translate 100,100 circle 0,0 100,0" images/*.png
Но это всегда дает мне ошибку, независимо от того, где я размещаю DstOver:
mogrify: non-conforming drawing primitive definition `DstOver' @ error/draw.c/DrawImage/3169.
2 ответа
Операторы композиции, такие как "DstOver", используются только с примитивом "image" для "-draw". Просто опустите это. Смотрите запись "-draw" в документации командной строки ImageMagick.
У вас может быть несколько опций "-draw", некоторые рисунки, такие как "круг..." и другие, например, "image DstOver...".
Я не уверен, что вы пытаетесь сделать, но в целом, mogrify
будет что-то делать с multi-image operators
или же stack operators
, Единственное исключение, которое я знаю, это -draw image
оператор, поэтому вам нужно создать свое изображение заранее, а затем использовать это:
# Blue rectangle with transparent centre
convert -size 200x200 xc:none -bordercolor blue -border 50 start.png
# Your circle
convert -size 200x200 xc:white -fill red -draw 'translate 100,100 circle 0,0 100,0' circle.png
# Now underlay
mogrify -draw "image DstOver 0,0 0,0 'circle.png'" start.png