Rastgele görüntü oluşturucu


14

Rastgele veri üretiyorum ve kullanarak bir PNG görüntüsüne dönüştürmeye çalışıyorum:

head -c 1MB < /dev/urandom | hexdump -e '16/1 "_x%02X"' | sed 's/_/\\/g; s/\\x  //g; s/.*/    "&"/' | tr -d "\"" | display -depth 8 -size 1000x1000+0 rgb:-

Bu komut her zaman bazı RGB pikselleri olan grimsi bir görüntü gösterir. Neyi yanlış yapıyorum ?

Son hedefim rastgele verilerle en az bir görüntü oluşturmak.


"Rastgele" tanımlayın. Bir grup rastgele RGB değerinin görsel ortalaması, sonuçta griye doğru eğilimli olacaktır.
Wildcard

Ben de öyle düşünmüştüm, ama her teori neredeyse aynı göründüğü için bu teoriyi doğrulayamadım.
pxoto

15 yıl önce Basic'te benzer bir şey yaptım (Chipmunk Basic, spesifik olarak). Küçük bir grafik penceresi vardı ve rastgele konuma rastgele renk bir piksel çıktı tuttu. Sonuç, eski moda bir TV'deki renk statik gibi, tüm zaman boyunca hala aynı görünen sürekli değişen bir resimdi. Gerçekten gri değil, renk statik .
Wildcard

Bazı statik üretmeyi başardım ama görüntüler çoğunlukla gri.
pxoto

Yanıtlar:


17

İlk olarak, display RGB:-o hexdump | sed | trboru hattıyla inşa ettiğiniz gibi kodlanmış bir onaltılık dize değil, ham baytları beslemeniz gerekir .

İkincisi, yeterli bayt vermiyorsunuz: Her renk kanalı için bir tane olmak üzere piksel başına 3 bayta ihtiyacınız var.

İstediğinizi yapar:

mx=320;my=256;head -c "$((3*mx*my))" /dev/urandom | display -depth 8 -size "${mx}x${my}" RGB:-

Doğrudan PNG'ye kaydetmek için şunları yapabilirsiniz:

mx=320;my=256;head -c "$((3*mx*my))" /dev/urandom | convert -depth 8 -size "${mx}x${my}" RGB:- random.png

İşte tipik bir çıktı görüntüsü:

/ Dev / urandom'dan oluşturulan RGB görüntüsü


Bir animasyon yapmak istiyorsanız, tek tek kareler oluşturmanıza ve kaydetmenize gerek yoktur. Ham bayt akışını doğrudan ffmpeg / avconv'a, ör.

mx=320; my=256; nframes=100; dd if=/dev/urandom bs="$((mx*my*3))" count="$nframes" | avconv -r 25 -s "${mx}x${my}" -f rawvideo -pix_fmt rgb24 -i - random.mp4

Gerçekten çözdüğüne inanamıyorum, nasıl çalıştığını anlamak için emri inceleyeceğim.
pxoto
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.