在 imagemagick 中创建编号图像系列

在 imagemagick 中创建编号图像系列

我如何创建编号图像系列?我必须为数千幅图像编号(在其上书写)。

是否有捷径可寻:

转换 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.pngoutput_0002.png...output_1250.png

这样您只需使用一个转换命令。

相关内容