Gibt es ein Programm für Linux, das binäre Rohdaten anzeigen kann?
Jedes Byte in meinen Binärdateien stellt ein Pixel dar, daher wäre es sehr nützlich, wenn es so etwas gibt, wo ich sagen könnte
program_name --input=dat001.bin --width=200 --height=100
und es würde die Pixel anzeigen.
Ich frage mich, ob Gnuplot dafür verwendet werden kann ...?
hd
zum Formatieren verwendet werden. Dann fragst du nach einem Bild. Wenn es sich um ein Bild handelt, wird es in einem Bildformat (wie bmp) vorliegen, das mindestens eine Kopfzeile enthält, die das Format, die Breite, die Höhe, die Farbtiefe und möglicherweise auch eine Farbpalette angibt befestigt.Antworten:
Um die "rohen Binärdaten" zu sehen, würde ich den Hex-Dump-Befehl
hd
oder verwendenhexdump
Ich kenne kein Bildformat, das aus unstrukturierten Bytes besteht - sind die Daten 8-Bit-RGB-Werte? Wenn die Datei 30000 Bytes enthält, ist das RGB für 100x100 Pixel oder RGB für 50x200 Pixel oder RGB für 200x50 Pixel oder etwas anderes? Gibt es eine Palette? Sie müssen etwas über die Organisation der Daten wissen!
Um es als Bild anzuzeigen, würde ich die NetPBM-Dienstprogramme oder vielleicht ImageMagick verwenden , um es in eine Form zu konvertieren, die von einem Bildbetrachter verstanden wird
Wenn das oben Genannte nicht funktioniert, würde ich untersuchen, wie man ein kleines Perl-Skript schreibt
quelle
yum search hd
auf meinem Fedora-Desktop gemacht und es hatte es nicht.hexdump
. Auf SuSE ist es imutil-linux
Paket.hexdump
in Arch.Okay, Gnuplot kann das.
http://gnuplot.sourceforge.net/demo_4.4/image.html
quelle
convert
von ImageMagick kann es tun.ZB ein 8-Bit-2x3-Graustufenbild:
Dann:
Befehlserklärung:
-depth 8
: Jede Farbe hat 8 Bits-size 2x3+0
:2x3
image.+0
bedeutet beginnend mit Offset 0 in der Datei. Wenn Metadaten-Header vorhanden sind, können Sie diese mit dem Versatz überspringen.gray:f
: Die Eingabedatei istf
und das Format istgray
wie unter http://www.imagemagick.org/script/formats.php definiert. Diese seltsame Notation wird verwendet, weil ImageMagick normalerweise das Format anhand der Erweiterung bestimmt, aber hier gibt es keine Erweiterung .Das Problem ist nun, wie die Ausgabe angezeigt wird. Eine direkte
eog
:ist nicht sehr gut, weil das Bild zu klein ist, und wenn Sie viel zoomen,
eog
wird ein Anzeigealgorithmus verwendet, der Pixel mischt, was für die meisten Bilder besser ist, in unserem Fall jedoch nicht. Ich habe zwei Möglichkeiten gefunden:gimp out.png
. Bildbearbeiter müssen jedes einzelne Pixel anzeigen.convert out.png -scale 300x200 out2.png
.-scale
wird stattdessen benötigt-resize
, da-resize
Pixel ähnlich wieeog
standardmäßig hochgemischt werden.Ausgabe:
RGB Beispiel:
Getestet unter Ubuntu 16.04, ImageMagick 6.8.9.
quelle
/tmp/tex1.dat
) haben, können Sie das konvertierte Bild mit Imagemagick's direktdisplay
als 128x256 Pixel-Bild mitdisplay -depth 8 -size 128x256+0 RGBA:/tmp/tex1.dat
-endian
Option ausprobiert, aber es scheint, als würde sie funktionieren-depth 16
, das Bild ist sehr dunkelWenn Sie es nicht direkt anzeigen, sondern konvertieren möchten, können Sie dies mit dem Dienstprogramm convert tun:
Zum Lesen von stdin, vorausgesetzt 320 x 200 Pixel, 8-Bit-Grau, Header von 0, Speichern in pic.png im PNG-Format.
quelle
gray:-
bedeutet Formatgray
und-
bedeutet von stdin. Somit hängt der aktuelle Befehl und wartet auf stdin. Ich habe es auf meiner Antwort weiter erklärt: superuser.com/a/978432/128124