我如何创建编号图像系列?我必须为数千幅图像编号(在其上书写)。
是否有捷径可寻:
转换 input.png -font arial -fill black -pointsize 10 -annotate +20+20“1”输出_0001.png
转换 input.png -font arial -fill black -pointsize 10 -annotate +20+20“2”输出_0002.png
....
转换 input.png -font arial -fill black -pointsize 10 -annotate +20+20“1250”输出_1250.png
答案1
使用for
循环:
for i in `seq 1 1250`
do convert input.png -font arial -fill black -pointsize 10 -annotate +20+20 $i output_$(printf %04d $i).png
done
编辑:您在问题中没有说明您使用的是 Windows。由于我既不知道 cmd.exe 也不知道 PowerShell,因此我将提出两种替代解决方案:
如果你有一个 Perl 发行版(例如http://strawberryperl.com或者http://dwimperl.com),尝试(未经测试):
#!/usr/bin/perl
use v5.14;
for (1 .. 1250) {
my $x = sprintf "%04d", $_;
system qw/convert input.png -font arial -fill black -pointsize 10 -annotate +20+20/, $_, "output_$x.png";
}
如果您有 C 编译器,请尝试(再次未经测试);
#include<stdio.h>
#include<stdlib.h>
int main(void){
char cmd[1000];
int i;
for(i = 1 ; i <= 1250 ; i++){
sprintf(cmd, "convert input.png -font arial -fill black -pointsize 10 -annotate +20+20 %d output_%04d.png", i, i);
system(cmd);
}
return 0;
}
答案2
在任何地方都找不到快速答案,因此我编写了一个批处理脚本来执行您所需要的操作:
@echo off
setlocal enableextensions enabledelayedexpansion
set /a count = 0
For %%A in (*.png) DO (
set /a count += 1
echo Processing Image !count!
magick convert -font arial-black -pointsize 250 -fill white -strokewidth 5 -stroke black -gravity southeast -annotate +100+0 "!count!" "%%A" "!count!_%%A"
)
endlocal
pause
如果您是批处理新手,则需要注意以下几点:
For %%A in (*.png) DO (
这意味着它将仅处理此文件夹中的 PNG 文件。将其更改为您使用的任何文件扩展名。
看一下主要命令:
magick convert -font arial-black -pointsize 250 -fill white -strokewidth 5 -stroke black -gravity southeast -annotate +100+0 "!count!" "%%A" "!count!_%%A"
您可以更改几项内容,包括字体、数字的颜色(填充)以及是否希望有轮廓(笔触和笔触宽度,如果您不想要它们,请删除)。重力决定了数字的打印位置,在本例中,东南意味着它将位于右下角。
而且您肯定想要更改 -pointsize,它控制数字的大小。我选择了 250 这个值,因为我需要编号的图像都是 1920x1080,但字体大小需要根据目标图像的大小进行更改。
和这个...
set /a count = 0
意味着打印在图像上的第一个数字将是 1。如果您希望它为零,请将其设置为 -1,更高或更低,具体取决于您需要的起始数字。
希望这对将来找到它的人有所帮助!
答案3
代替:output_1250.png
你要:output_%04d.png
%d
告诉 imagemagick 插入一个增量数字,例如01.png
02.png
,和%04d
意味着使数字长度为 4 位,并用零填充,例如output_0001.png
,output_0002.png
...output_1250.png
这样您只需使用一个转换命令。