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