Per vedere i "dati binari grezzi", userei il comando hex dump hd
o 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 |a.aaaaaaa.aaaaaa| 00000040 61 61 0a |aa.| 00000043
Non conosco alcun formato di immagine costituito da byte non strutturati:i dati sono valori RGB a 8 bit? Se il file contiene 30000 byte, è RGB per 100x100 pixel o RGB per 50x200 pixel o RGB per 200x50 pixel o qualcos'altro? C'è una tavolozza? Devi sapere qualcosa sull'organizzazione dei dati!
Per vederlo come un'immagine userei le utilità NetPBM o forse ImageMagick per convertirlo in una forma comprensibile da un visualizzatore di immagini
Se quanto sopra non può fare il lavoro, esaminerei la scrittura di un piccolo script Perl
Ok, gnuplot può farlo.
http://gnuplot.sourceforge.net/demo_4.4/image.html
convert
da ImageMagick può farlo.
Ad esempio, una scala di grigi 2x3 a 8 bit:
printf '\x00\xFF\x88\xFF\x00\xFF' > f
Quindi:
convert -depth 8 -size 3x2+0 gray:f out.png
Spiegazione del comando:
-depth 8
:ogni colore ha 8 bit-size 2x3+0
:2x3
Immagine.+0
significa iniziare dall'offset 0 nel file. Se ci sono intestazioni di metadati, puoi saltarle con l'offset.gray:f
:il file di input èf
e il formato ègray
, come definito su http://www.imagemagick.org/script/formats.php Questa strana notazione è usata perché ImageMagick di solito determina il formato dall'estensione, ma qui non c'è estensione.
Il problema ora è come visualizzare l'output. Un eog
diretto :
eog out.png
non è molto buono perché l'immagine è troppo piccola, e se ingrandisci molto eog
utilizza un algoritmo di visualizzazione che mescola i pixel, che è meglio per la maggior parte delle immagini, ma non nel nostro caso. Ho trovato due possibilità:
gimp out.png
. Gli editor di immagini devono mostrare ogni singolo pixel.convert out.png -scale 300x200 out2.png
.-scale
è necessario invece di-resize
, poiché-resize
mescola i pixel in modo molto simile aeog
per impostazione predefinita.
Uscita:
Esempio RGB:
printf '\xFF\x00\x00\x00\xFF\x00\x00\x00\xFF' > f
convert -depth 8 -size 3x1+0 rgb:f out.png
Testato su Ubuntu 16.04, ImageMagick 6.8.9.