Tüm renklerle animasyonlar


11

Geçen yıl, her 24 bit RGB rengini içeren bir görüntü oluşturmak için çok popüler bir zorluk vardı .

Benim meydan okumam, her karenin her pikselinin renginin benzersiz olduğu pürüzsüz bir animasyon (24 kare / sn demek) yaratmak. Ayrıca, her renk aynı sayıda (0'dan büyük) göründüğü sürece renklerin çoğaltılmasına izin vereceğim , aksi takdirde animasyonun kısa olması veya karelerin küçük olması gerekir.

Burada , 2d versiyonunun kazanan çözümüne dayanan bazı örnekler ürettim. Ne yazık ki, videoları yerleştiremeyeceğiniz görünüyor, bu yüzden bağlantılar yapmak zorunda kalacak.


1
Birisi bu soruda bağlantılı sorudan bir animasyon yaptı . Yine de kriterleri karşılayıp karşılamadığından emin değilim.
mbomb007

1
Biraz daha teknik özellikler iyi olurdu. "Create" ne anlama geliyor? Bir video diske dönüştürülsün mü? Gerçek zamanlı bir animasyon gösterilsin mi?
mınxomaτ

Sen bir gif kullanabilirsiniz ...
wizzwizz4

1
@ wizzwizz4 bir GIF 256'dan fazla renk tutamaz; böylece her piksel için farklı renklerle 16x16 resim oluşturabilir ve animasyon için yer kalmaz.
Titus

Yanıtlar:


4

Mathematica

Bu, her bir rgb renginin 256 x 256 x 256 birim ızgarada kesişim içerdiği basit bir uygulamadır.

Sarsıntı videoda bir artefakt gibi görünüyor, verilerde bir hata değil, kesin olmalı.

kırmızı değerler aşağı doğru, yeşil değerler sağa ve mavi değerler kare kare artar.

Belki daha sonra işleri karıştırırım.

f@b_ := Image@Table[{r, g, b}/255, {r, 0, 255}, {g, 0, 255}]
Export["c.mov", Table[f@b, {b, 0, 255}]]

QuickTime klibi


Bu kafa karıştırıcı. Benim için çalışıyor ve izinler herkesin erişebilmesi için ayarlanmış. Vimeo.com'da başka videolar da oynatabiliyor musunuz?
DavidC

Bazı nedenlerden dolayı şimdi çalışıyor.
Eylül'ü

duyduğuma sevindim.
DavidC

0

PHP (+ HTML) + JavaScript

Bölüm 1
, 0 ila 255 arasında farklı kırmızı değerlere sahip 256 görüntü oluşturur;
yeşil değer = satır dizini, mavi değer = sütun dizini

for($r=$h=256;$r--;){$i=imagecreatetruecolor($g=$h,$h);for(;$g--;)for($b=$h;$b--;)imagesetpixel($i,$g,$b,imagecolorallocate($i,$r,$g,$b));imagepng($i,"$r.png");imagedestroy($i);}

Not : PHP uygulamanıza bağlı olarak, bu bir dahili sunucu hatası verebilir.
Varsa, önceden oluşturulmuş en az sayıda görüntüyü alın, <number>,sonradan ekleyin $r=ve tekrar çalıştırın.

Bölüm 2
, 0 ila 255 ve arkadan bu görüntüler arasında döngü yapar (0 ve 255, her biri 2 kare alır)

<img><script>r=d=0;setInterval(()=>{document.images[0].src=r+".png",(d?!r--:(++r)>=256)?r-=(d=!d)?1:-1:r},40);</script>
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.