Анімації з усіма кольорами


11

Минулого року було дуже популярним завданням створити зображення, що містить кожен 24-бітний RGB-колір .

Моє завдання - створити плавну анімацію (скажімо 24 кадри / с), де колір кожного пікселя кожного кадру є унікальним. Я також дозволю дублювання кольорів до тих пір, поки кожен колір з’явиться однакову кількість разів (більше 0) , оскільки в іншому випадку анімація повинна бути короткою, або кадри малими.

Я підготував тут кілька прикладів , заснованих на виграшному рішенні 2d версії. На жаль, здається, що ви не можете вставляти відео, тому потрібно мати посилання.


1
Хтось уже зробив анімацію у цій відповіді із пов’язаного питання. Я не впевнений, чи відповідає він критеріям.
mbomb007

1
Трохи більше технічних характеристик було б непогано. Що означає "творити"? Надати відео на диск? Показати анімацію в реальному часі?
mınxomaτ

Ви можете скористатися gif ...
wizzwizz4

1
@ wizzwizz4 GIF не може містити більше 256 кольорів; тож ви можете створити зображення розміром 16x16 з різними кольорами для кожного пікселя - і не залишається місця для анімації.
Тіт

Відповіді:


4

Математика

Це проста реалізація, коли кожен колір rgb займає перетин в сітці 256 на 256 на 256 одиниць.

Хитрість, здається, є артефактом відео, а не помилкою в даних, яка повинна бути точною.

червоні значення збільшуються вниз, зелені значення збільшуються вправо, а сині - збільшуються за рамками.

Можливо, я переплутаю справи пізніше.

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

QuickTime кліп


Це дивовижно. Він працює для мене, і дозволу встановлюється для кожного, хто має доступ до нього. Чи можете ви відтворювати інші відео на vimeo.com?
DavidC

Це працює зараз, чомусь.
Фаталізувати

радий це чути.
DavidC

0

PHP (+ HTML) + JavaScript

Частина 1
генерує 256 зображень з чіткими червоними значеннями від 0 до 255;
зелене значення = індекс рядка, синє значення = індекс стовпця

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);}

Примітка . Залежно від вашої реалізації PHP, це може призвести до внутрішньої помилки сервера.
Якщо це так, візьміть найменшу кількість створених зображень, вставіть <number>,після $r=і запустіть ще раз.

Частина 2
прокручує ці зображення від 0 до 255 і назад (0 і 255, беручи по 2 кадри кожен)

<img><script>r=d=0;setInterval(()=>{document.images[0].src=r+".png",(d?!r--:(++r)>=256)?r-=(d=!d)?1:-1:r},40);</script>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.