在imagemagick中创建编号图像系列


1

如何创建带编号的图像系列?我必须给成千上万的图像编号(写上它们)。

是否有捷径可寻:

convert input.png -font arial -fill black -pointsize 10 -annotate + 20 + 20 “1” output_0001.png

convert input.png -font arial -fill black -pointsize 10 -annotate + 20 + 20 “2” output_0002.png

....

convert input.png -font arial -fill black -pointsize 10 -annotate + 20 + 20 “1250” output_1250.png

Answers:


2

用一个 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;
}

看起来不错,但我在命令提示符下“我此时意外”。
destor

它在这里工作(bash 4.3.33)。你用的是什么外壳?试着把它放进去 #!/bin/bash 脚本
user49740

我试图在Windows 7上。我将你的代码复制到一个bat文件中。
destor

1
我没有测试C代码,但Perl脚本对我来说很好,谢谢。
destor

0

代替: output_1250.png

你要: output_%04d.png

%d 告诉imagemagick插入一个增量数字,例如 01.png 02.png,和 %04d 意味着使数字长4位,用零填充它,例如 output_0001.pngoutput_0002.png ... output_1250.png

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


1
谢谢,但实际上我的意思是在图像上写数字,而不仅仅是给他们一个输出数字。
destor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.