生のバイナリデータを表示できるLinux用のプログラムはありますか?
バイナリファイルの各バイトはピクセルを表すため、このようなものが存在する場合は非常に便利です
program_name --input=dat001.bin --width=200 --height=100
ピクセルが表示されます。
gnuplotがこれに使用できるのかしら...?
生のバイナリデータを表示できるLinux用のプログラムはありますか?
バイナリファイルの各バイトはピクセルを表すため、このようなものが存在する場合は非常に便利です
program_name --input=dat001.bin --width=200 --height=100
ピクセルが表示されます。
gnuplotがこれに使用できるのかしら...?
回答:
「生のバイナリデータ」を表示するには、hex dumpコマンドを使用するhdか、hexdump
$ hd -C a.txt 00000000 61 0a 61 61 0a 61 61 61 0a 61 61 61 61 0a 61 61 | a.aa.aaa.aaaa.aa | 00000010 61 61 61 0a 62 62 62 0a 62 62 62 62 0a 62 62 62 | aaa.bbb.bbbb.bbb | 00000020 62 62 0a 3c 62 65 67 69 6e 3e 0a 61 61 61 61 61 | bb。<begin> .aaaaa | 00000030 61 0a 61 61 61 61 61 61 61 0a 61 61 61 61 61 61 61 | a.aaaaaaa.aaaaaa | 00000040 61 61 0a | aa。| 00000043
非構造化バイトで構成される画像形式は知りません-データは8ビットRGB値ですか?ファイルに30000バイトが含まれている場合、100x100ピクセルのRGB、50x200ピクセルのRGB、または200x50ピクセルのRGBなどがありますか?パレットはありますか?データの構成について何かを知る必要があります!
画像として表示するには、NetPBMユーティリティまたはImageMagickを使用して、画像ビューアーが理解できる形式に変換します
上記でうまくいかない場合は、小さなPerlスクリプトの作成を調査します。
yum search hdFedoraデスクトップでやったが、それはなかった。
hexdump。SuSEでは、util-linuxパッケージに含まれています。
hexdumpArchにもあります。
さて、gnuplotでできます。
convertImageMagickからそれを行うことができます。
たとえば、8ビットの2x3グレースケール:
printf '\x00\xFF\x88\xFF\x00\xFF' > f
次に:
convert -depth 8 -size 3x2+0 gray:f out.png
コマンドの説明:
-depth 8:各色には8ビットがあります-size 2x3+0:2x3画像。+0ファイルのオフセット0から開始することを意味します。メタデータヘッダーがある場合は、オフセットでそれらをスキップできます。gray:f:入力ファイルでありf、フォーマットは、grayで定義されるように、http://www.imagemagick.org/script/formats.php ImageMagickには、通常拡張からフォーマットを決定するため、この奇妙な表記法が使用されるが、ここでは拡張子がありません。ここでの問題は、出力の表示方法です。直接eog:
eog out.png
は画像が小さすぎるためあまりよくありません。また、多くを拡大する場合eogは、ピクセルを混合する表示アルゴリズムを使用します。これはほとんどの写真に適していますが、私たちの場合はそうではありません。私は2つの可能性を見つけました:
gimp out.png。画像エディターはすべてのピクセルを表示する必要があります。convert out.png -scale 300x200 out2.png。-scale代わりに必要とされて-resizeいるので、-resizeよく似アップミクセルピクセルeogデフォルトで。出力:
RGBの例:
printf '\xFF\x00\x00\x00\xFF\x00\x00\x00\xFF' > f
convert -depth 8 -size 3x1+0 rgb:f out.png
Ubuntu 16.04、ImageMagick 6.8.9でテスト済み。
/tmp/tex1.dat)がある場合、Imagemagickで変換された画像displayを128x256ピクセルの画像として直接表示できますdisplay -depth 8 -size 128x256+0 RGBA:/tmp/tex1.dat
-endianオプションがそれとして働くようです-depth 16、画像は非常に暗いです
直接表示するのではなく、変換する場合は、変換ユーティリティでこれを実行できます。
320 x 200ピクセル、8ビットグレー、ヘッダー0を想定して、stdinから読み取るには、PNG形式でpic.pngに保存します。
convert -depth 8 -size 320x200+0 gray:- pic.png
gray:-形式grayを-意味し、標準入力からを意味します。したがって、現在のコマンドは標準入力を待ってハングします。私の答えでそれをさらに説明しました:superuser.com/a/978432/128124
hdフォーマットに使用できます。次に、画像を表示するように求めます。画像の場合は、少なくともbmpのような画像形式になります。少なくとも、形式、幅、高さ、色深度を識別するヘッダーがあり、カラーパレットもあります。添付。