Jak wygenerować wiele (pustych) plików graficznych?

12

Na potrzeby testu muszę szybko utworzyć 1700 obrazów JPG (nawet pustych) w zdefiniowanym rozmiarze 1000 x 706. Zastanawiam się, czy moglibyśmy to zrobić za pomocą skryptu powłoki lub programu (takiego jak ImageMagick). Szkoda, że nie nazywa img_0.jpg, img_1.jpg...

Ktoś zna proste rozwiązanie?

Raphaël
źródło

Odpowiedzi:

21

Następujące powinny działać dla twoich potrzeb:

#!/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 tworzy pierwszy obraz, a następnie jest kopiowany w celu utworzenia 1700 plików. Jeśli ulimitnie ogranicza Cię to (prawdopodobnie) i masz wystarczającą liczbę deskryptorów plików, możesz zamienić pętlę na:

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

Możesz również użyć krótszego idiomu (z większym wymaganiem pamięci do przechowywania wszystkich liczb jednocześnie) for _num in {1..1699}w najnowszych bashwersjach, ale nie określasz, które powłoki są dostępne. ((jest dostępny w większości powłok ( bash, ksha ashprzynajmniej nie jestem pewien co do innych).

Chris Down
źródło
Dziękuję za pomoc Próbuję tego za kilka godzin. Dziękuję za pomysł =) Głosuję na twoją odpowiedź, gdy tylko będę mieć wystarczającą liczbę punktów
Raphaël