Анимации со всеми цветами


11

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

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

Здесь я привел несколько примеров , основанных на выигрышном решении для 2-й версии. К сожалению, кажется, что вы не можете вставлять видео, поэтому ссылки придется делать.


1
Кто-то уже сделал анимацию в этом ответе из связанного вопроса. Я не уверен, соответствует ли он критериям, все же.
mbomb007

1
Немного больше технических характеристик было бы неплохо. Что значит «создать»? Рендеринг видео на диск? Показать анимацию в реальном времени?
Mynxomaτ

Вы могли бы использовать gif ...
wizzwizz4

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

Ответы:


4

Mathematica

Это простая реализация, где каждый цвет 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

Это работает сейчас, по некоторым причинам.
Fatalize

рад слышать это.
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.