Ảnh động với đủ màu sắc


11

Năm ngoái, có một thử thách rất phổ biến để tạo ra một hình ảnh chứa mọi màu RGB 24 bit .

Thử thách của tôi là tạo ra một hình ảnh động mượt mà (24 khung hình / giây), trong đó màu sắc của mỗi pixel của mỗi khung hình là duy nhất. Tôi cũng sẽ cho phép sao chép các màu miễn là mọi màu xuất hiện cùng một số lần (lớn hơn 0) , vì nếu không thì hình ảnh động sẽ phải ngắn hoặc các khung nhỏ.

Tôi đã tạo ra một số ví dụ ở đây , dựa trên giải pháp chiến thắng cho phiên bản 2d. Thật không may, có vẻ như bạn không thể nhúng video, vì vậy các liên kết sẽ phải làm.


1
Ai đó đã làm một hình ảnh động trong câu trả lời này từ câu hỏi được liên kết. Tôi không chắc chắn nếu nó đáp ứng các tiêu chí, mặc dù.
mbomb007

1
Thông số kỹ thuật bit hơn sẽ tốt đẹp. "Tạo" có nghĩa là gì? Kết xuất video vào đĩa? Hiển thị một hình ảnh động thời gian thực?
mınxomaτ

Bạn có thể sử dụng gif ...
wizzwizz4

1
@ wizzwizz4 một GIF không thể chứa hơn 256 màu; để bạn có thể tạo một hình ảnh 16x16 với các màu khác nhau cho mỗi pixel - và không còn chỗ cho hoạt hình.
Tít

Câu trả lời:


4

Toán học

Đây là một triển khai đơn giản với mỗi màu rgb chiếm một giao điểm trong lưới 256 x 256 x 256.

Sự giật cục dường như là một vật phẩm của video, không phải là lỗi trong dữ liệu, điều này là chính xác.

giá trị màu đỏ tăng xuống, giá trị màu xanh tăng theo chiều phải và giá trị màu xanh tăng theo khung.

Có lẽ tôi sẽ làm lộn xộn mọi thứ sau này.

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

QuickTime Clip


Điều này thật khó hiểu. Nó hoạt động với tôi và các quyền được thiết lập cho mọi người truy cập. Bạn có thể phát các video khác tại vimeo.com không?
DavidC

Nó làm việc bây giờ, vì một số lý do.
Gây tử vong

rất vui khi nghe nó
DavidC

0

PHP (+ HTML) + JavaScript

Phần 1
tạo 256 hình ảnh với các giá trị màu đỏ khác biệt từ 0 đến 255;
giá trị xanh = chỉ số hàng, giá trị xanh = chỉ mục cột

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

Lưu ý : Tùy thuộc vào việc triển khai PHP của bạn, điều này có thể gây ra lỗi máy chủ nội bộ.
Nếu có, lấy số lượng thấp nhất của hình ảnh đã được tạo, chèn <number>,sau $r=và chạy lại.

Phần 2
lặp qua các hình ảnh này từ 0 đến 255 và quay lại (0 và 255 lấy 2 khung hình mỗi cái)

<img><script>r=d=0;setInterval(()=>{document.images[0].src=r+".png",(d?!r--:(++r)>=256)?r-=(d=!d)?1:-1:r},40);</script>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.