criando séries de imagens numeradas em imagemagick

1

Como posso criar uma série de imagens numeradas? Eu tenho que dar um número (escrevendo sobre eles) para milhares de imagens.

Existe uma maneira fácil de fazer isso:

convert input.png -font arial -fill black -pontos 10 -annotate + 20 + 20 "1" output_0001.png

convert input.png -font arial -fill black -pontos 10 -annotate + 20 + 20 "2" output_0002.png

....

convert input.png -font arial -fill black -pontos 10 -annotate + 20 + 20 "1250" output_1250.png

    
por destor 01.05.2015 / 11:37

2 respostas

2

Use um loop 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

EDITAR : você não especificou em sua pergunta que estava no Windows. Como eu não sei o cmd.exe nem o PowerShell, vou propor duas soluções alternativas:

Se você tiver uma distribuição Perl (por exemplo, link ou link ), tente (não testado):

#!/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";
}

Se você tiver um compilador C, tente (novamente não testado);

#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;
}
    
por 01.05.2015 / 12:06
0

Em vez de: output_1250.png

Você deseja: output_%04d.png

%d diz ao imagemagick para inserir um número incremental, por exemplo 01.png 02.png e %04d significa tornar o número 4 dígitos longo, preenchendo-o com zeros, e. output_0001.png , output_0002.png ... output_1250.png

Dessa forma, você usa apenas um comando de conversão.

    
por 01.05.2015 / 11:45