
Wie erstelle ich eine nummerierte Bildserie? Ich muss Tausenden von Bildern Nummern (mit Beschriftung) geben.
Gibt es eine einfache Möglichkeit, dies zu tun:
convert input.png -font arial -fill black -pointsize 10 -annotate +20+20"1"Ausgabe_0001.png
convert input.png -font arial -fill black -pointsize 10 -annotate +20+20"2"Ausgabe_0002.png
....
convert input.png -font arial -fill black -pointsize 10 -annotate +20+20"1250"Ausgabe_1250.png
Antwort1
Verwenden Sie eine for
Schleife:
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
BEARBEITEN: Sie haben in Ihrer Frage nicht angegeben, dass Sie Windows verwenden. Da ich weder cmd.exe noch PowerShell kenne, schlage ich zwei alternative Lösungen vor:
Wenn Sie eine Perl-Distribution haben (zBhttp://strawberryperl.comoderhttp://dwimperl.com), versuchen Sie (ungetestet):
#!/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";
}
Wenn Sie einen C-Compiler haben, versuchen Sie es (ebenfalls ungetestet);
#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;
}
Antwort2
Da ich nirgends eine schnelle Antwort finden konnte, habe ich ein Batch-Skript geschrieben, das genau das tut, was Sie brauchen:
@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
Wenn Sie mit Batch noch nicht vertraut sind, müssen Sie auf Folgendes achten:
For %%A in (*.png) DO (
Dies bedeutet, dass nur die PNG-Dateien in diesem Ordner verarbeitet werden. Ändern Sie es in die von Ihnen verwendete Dateierweiterung.
Und schauen Sie sich den Hauptbefehl an:
magick convert -font arial-black -pointsize 250 -fill white -strokewidth 5 -stroke black -gravity southeast -annotate +100+0 "!count!" "%%A" "!count!_%%A"
Sie können verschiedene Dinge ändern, darunter die Schriftart, die Farbe der Zahl (Füllung) sowie ob Sie einen Umriss haben möchten (Strich und Strichstärke; entfernen Sie diese, wenn Sie sie nicht möchten). Die Schwerkraft bestimmt, wo die Zahl gedruckt wird. In diesem Fall bedeutet Südosten, dass sie in der unteren rechten Ecke sein wird.
Und Sie sollten auf jeden Fall -pointsize ändern, das die Größe der Zahl steuert. Ich habe einen Wert von 250 gewählt, da die Bilder, die ich nummerieren musste, alle 1920 x 1080 groß waren, aber die Schriftgröße muss je nach Größe Ihres Zielbildes geändert werden.
Und das...
set /a count = 0
Bedeutet, dass die erste auf einem Bild gedruckte Zahl 1 ist. Setzen Sie diesen Wert auf -1, wenn Sie eine Null, einen höheren oder niedrigeren Wert wünschen, abhängig von der benötigten Startzahl.
Hoffe, das hilft jedem, der es in Zukunft findet!
Antwort3
Anstatt:output_1250.png
Sie wollen:output_%04d.png
%d
weist ImageMagick an, eine inkrementelle Zahl einzufügen, z. B. 01.png
02.png
, und %04d
bedeutet, die Zahl vierstellig zu machen und sie mit Nullen aufzufüllen, z. output_0001.png
B. output_0002.png
…output_1250.png
Auf diese Weise verwenden Sie nur einen Konvertierungsbefehl.