2015-06-20 2 views
0

Я используюнумерации/маркировки изображений (например, 1,2,3 или А, В, С) с ImageMagick монтажа

montage *.tif output.tif 

объединить несколько изображений в один. Я бы хотел, чтобы они были пронумерованы (иногда 1,2,3 ...; somtimes A, B, C ...) Какие существуют возможности для маркировки одиночных изображений в комбинированном формате? Есть ли возможность поместить ярлык не под изображение, но, например, в верхнем левом или нижнем правом углу?

К сожалению, я не мог понять, как использовать команду -label для достижения этого. Спасибо за любые предложения.

ответ

3

Если вы хотите вложить немного больше усилий, вы можете иметь больше контроля. Если вы сделаете это так, вы можете пометить изображения «на лету», поскольку вы их монтируете, а не сохраняете их все помеченные, а затем монтируете их. Кроме того, можно регулировать ширину, с точки зрения количества изображений в каждой строке, более легко:

#!/bin/bash 
number=0 
for f in *.tif; do 
    convert "$f" -gravity northwest -annotate +0+0 "$number" miff:- 
    ((number++)) 
done | montage -tile x3 - result.png 

enter image description here

Он использует формат ImageMagick miff, что означает Multiple формат файла изображения, чтобы сцепить все выводить изображения и отправлять их в stdin команды montage.

Или, вы можете изменить сценарий, как это:

#!/bin/bash 
number=0 
for f in *.tif; do 
    convert "$f" -gravity northwest -fill white -annotate +0+0 "$number" miff:- 
    ((number++)) 
done | montage -tile 2x - result.png 

получить

enter image description here

Или, может быть, это ...

#!/bin/bash 
number=0 
for f in *.tif; do 
    convert "$f" -gravity northwest -background gray90 label:"$number" -composite miff:- 
    ((number++)) 
done | montage -tile 2x - result.png 

enter image description here

Или с буквами ...

#!/bin/bash 
number=0 
letters="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
for f in *.tif; do 
    label=${letters:number:1} 
    convert "$f" -gravity northwest -background gray90 label:"$label" -composite miff:- 
    ((number++)) 
done | montage -tile 2x - result.png 

enter image description here

+0

Да, ваш ответ очень помог мне. Большое спасибо за подробное описание. Использование for-loop с -композицией miff: - действительно здорово. Я не мог понять две вещи: 1) Если я полностью оставил -backround, это делает фоновый белый (тот же результат, что и белый белый), есть ли способ не использовать какое-либо фоновое поле? 2) Как установить шрифт, например, Times New Roman? -font Times Новый Roman не работает, округляет does -font Times \ New \ Roman Моя команда выглядит так: конвертировать «$ i» -гравитацию на северо-западную точку 120 ярлыка: «$ label» -композиция miff: - –

+0

Используйте '-font" TimesNewRoman ". –

+0

Попробуйте '-background none' –

2

Какие существуют возможности для обозначения отдельных изображений в комбинированном виде?

Итерация с для петля.

for INDEX in {A,B,C}; do 
    convert ${INDEX}.jpg labeled_${INDEX}.jpg 
done 

Есть ли возможность поставить метку не под картинкой, но, например, в верхнем левом или правом нижнем углу?

Try используя -annotate с -gravity

convert rose: -fill white \ 
     -gravity NorthWest -annotate +0+0 "A" \ 
     A.png 

A rose

convert rose: -fill white \ 
     -gravity SouthEast -annotate +0+0 "B" \ 
     B.png 

Rose B

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