我正在使用转换命令用文本注释图像:
convert -pointsize 20 -fill green -draw 'text 270,460 "[TEXT TO ANNOTATE]" ' [INPUT IMAGE NAME].jpg [OUTPUT IMAGE NAME].jpg
我有 100 张图像和一个包含 100 个唯一单词的 .txt 文件,每个单词各占一行。如何才能使 100 张图像中的每一张都使用 .txt 文件的一行文本进行注释?为了澄清,我希望它们是独一无二的 - 不应该有超过一张用相同文本注释的图像。我是 shell 脚本新手,甚至不知道从哪里开始。
答案1
如果我正确理解该请求,可能是(POSIXsh
语法):
for file in ./*.[jJ][pP][gG]; do
IFS= read -r text <&3 || break
convert -pointsize 20 \
-fill green \
-draw "text 270,460 \"$text\"" \
"$file" "${file%.*}-annotated.${file##*.}"
done 3< /path/to/list.txt
(假设 的行中没有双引号list.txt
)。
它.jpg
按字母顺序处理当前目录中的所有(不区分大小写)文件,并且对于每个文件,从 读取一行文本list.txt
,用该行中的文本对 jpg 进行注释并保存为original-annotated.jpg
.