ランダムイメージジェネレータ

ランダムイメージジェネレータ

ランダムなデータを生成し、次を使用してこれをPNG画像に変換しようとしています。

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

このコマンドは、常にいくつかのRGBピクセルを含むグレー画像を表示します。私は何が間違っていましたか?

私の究極の目標は、任意のデータで少なくとも1つの画像を生成することです。

答え1

display RGB:-まず、このパイプで構築されたものなどのエンコードされた16進文字列ではなく、生のバイトを指定する必要があります。hexdump | sed | tr

第二に、十分なバイトを提供しません。各ピクセルには、各カラーチャンネルごとに1つずつ3バイトが必要です。

これがあなたが望むものです:

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

PNG で直接保存するには:

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

以下は一般的な出力イメージです。

/dev/urandomで生成されたRGBイメージ


アニメーションを適用する場合は、個々のフレームを作成して保存する必要はありません。生のバイトストリームをffmpeg / avconvに直接供給できます。

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

関連情報