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

2 ответа2

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;
}
0

Вместо: output_1250.png

Вы хотите: output_%04d.png

%d говорит imagemagick вставить инкрементный номер, например, 01.png 02.png , а %04d означает, что длина номера составляет 4 цифры, заполняя его нулями, например output_0001.png , output_0002.png ... output_1250.png

Таким образом, вы используете только одну команду конвертирования.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .