Wie werden viele (leere) Bilddateien erzeugt?

12

Für einen Test muss ich schnell 1700 JPG-Bilder (auch leere) in einer definierten Größe von 1000 x 706 erstellen. Ich frage mich, ob wir das mit einem Shell-Skript oder einem Programm (wie ImageMagick) machen könnten. Ich wünschte, sie riefen an img_0.jpg, img_1.jpg...

Kennt jemand eine einfache Lösung?

Raphaël
quelle

Antworten:

21

Folgendes sollte für Ihre Bedürfnisse funktionieren:

#!/bin/bash
convert -size 1000x706 xc:white img_0.jpg || { printf '%s\n' 'Failed to create original image' ; exit 1 ; }
for (( _num = 1 ; _num < 1700 ; _num++ )); do
   cp img_0.jpg "img_${_num}.jpg" || { printf '%s\n' "Failed to copy to image img_${_num}.jpg" ; exit 2 ; }
done

ImageMagick erstellt das erste Bild und kopiert es anschließend zu 1700 Dateien. Wenn Sie ulimitdies nicht einschränken (was wahrscheinlich der Fall sein wird) und Sie über genügend Dateideskriptoren verfügen, können Sie die Schleife ersetzen durch:

tee img_{1..1699}.jpg > /dev/null < img_0.jpg

Sie können auch das kürzere Idiom (mit einem größeren Speicherbedarf, um alle Zahlen gleichzeitig zu speichern) for _num in {1..1699}in neueren bashVersionen verwenden, aber Sie geben nicht an, welche Shells verfügbar sind. ((in den meisten Schalen verfügbar ist ( bash, ksh, und ashzumindest nicht sicher andere).

Chris Down
quelle
Danke für deine Hilfe. Ich versuche das in ein paar Stunden. Vielen Dank für die Idee =) Ich stimme für Ihre Antwort, sobald ich genug Punkte habe
Raphaël