Trình tạo hình ảnh ngẫu nhiên


14

Tôi đang tạo dữ liệu ngẫu nhiên và cố gắng chuyển đổi nó thành hình ảnh PNG bằng cách sử dụng:

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:-

Lệnh này luôn hiển thị hình ảnh màu xám với một số pixel RGB. Tôi đang làm gì sai?

Mục tiêu cuối cùng của tôi là tạo ra ít nhất một hình ảnh với dữ liệu ngẫu nhiên.


Xác định "ngẫu nhiên." Rốt cuộc, trung bình hình ảnh của một loạt các giá trị RGB ngẫu nhiên sẽ có xu hướng về màu xám.
tự đại diện

Đó là những gì tôi nghĩ, nhưng tôi không thể xác nhận lý thuyết này vì mọi bức ảnh đều trông giống nhau.
pxoto

15 năm trước tôi đã làm một cái gì đó tương tự trong Basic (cụ thể là Chipmunk Basic). Tôi có một cửa sổ đồ họa nhỏ và tiếp tục xuất một pixel màu ngẫu nhiên đến vị trí ngẫu nhiên. Kết quả là một bức tranh thay đổi liên tục mà về cơ bản vẫn trông giống như toàn bộ thời gian giống như màu tĩnh trên một chiếc TV lỗi thời. Nó không thực sự màu xám, mà là màu tĩnh .
tự đại diện

Tôi đã quản lý để tạo ra một số tĩnh nhưng hình ảnh chủ yếu vẫn là màu xám.
pxoto

Câu trả lời:


17

Trước tiên, bạn cần cung cấp display RGB:-byte thô, không phải là chuỗi hex được mã hóa như bạn đang xây dựng với hexdump | sed | trđường ống đó .

Thứ hai, bạn không cung cấp cho nó đủ byte: bạn cần 3 byte cho mỗi pixel, mỗi byte cho mỗi kênh màu.

Đây là những gì bạn muốn:

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

Để lưu trực tiếp vào PNG, bạn có thể làm điều này:

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

Đây là một hình ảnh đầu ra điển hình:

Hình ảnh RGB được tạo từ / dev / urandom


Nếu bạn muốn tạo một hình ảnh động, không cần phải tạo và lưu từng khung hình. Bạn có thể cung cấp luồng byte thô trực tiếp đến ffmpeg / avconv, vd

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

Tôi không thể tin rằng bạn thực sự đã giải quyết nó, tôi sẽ nghiên cứu lệnh để tìm ra cách nó hoạt động.
pxoto
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.