Pour voir les "données binaires brutes", j'utiliserais la commande de vidage hexadécimal hd
ou 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
Je ne connais aucun format d'image composé d'octets non structurés - les données sont-elles des valeurs RVB 8 bits? Si le fichier contient 30000 octets est-ce RVB pour 100x100 pixels ou RVB pour 50x200 pixels ou RVB pour 200x50 pixels ou autre chose ? Existe-t-il une palette ? Il faut savoir quelque chose sur l'organisation des données !
Pour le voir comme une image, j'utiliserais les utilitaires NetPBM ou peut-être ImageMagick pour le convertir en une forme comprise par une visionneuse d'images
Si ce qui précède ne peut pas faire le travail, j'étudierais l'écriture d'un petit script Perl
D'accord, gnuplot peut le faire.
http://gnuplot.sourceforge.net/demo_4.4/image.html
convert
de ImageMagick peut le faire.
Par exemple, une échelle de gris 2x3 8 bits :
printf '\x00\xFF\x88\xFF\x00\xFF' > f
Ensuite :
convert -depth 8 -size 3x2+0 gray:f out.png
Explication de la commande :
-depth 8
:chaque couleur a 8 bits-size 2x3+0
:2x3
image.+0
signifie commencer à l'offset 0 dans le fichier. S'il y a des en-têtes de métadonnées, vous pouvez les ignorer avec le décalage.gray:f
:le fichier d'entrée estf
, et le format estgray
, tel que défini sur http://www.imagemagick.org/script/formats.php Cette notation étrange est utilisée car ImageMagick détermine généralement le format à partir de l'extension, mais ici il n'y a pas d'extension.
Le problème est maintenant de savoir comment afficher la sortie. Un eog
direct :
eog out.png
n'est pas très bon car l'image est trop petite, et si vous zoomez beaucoup eog
utilise un algorithme d'affichage qui mélange les pixels, ce qui est mieux pour la plupart des images, mais pas dans notre cas. J'ai trouvé deux possibilités :
gimp out.png
. Les éditeurs d'images doivent afficher chaque pixel.convert out.png -scale 300x200 out2.png
.-scale
est nécessaire à la place de-resize
, depuis-resize
mixe les pixels commeeog
par défaut.
Sortie :
Exemple RVB :
printf '\xFF\x00\x00\x00\xFF\x00\x00\x00\xFF' > f
convert -depth 8 -size 3x1+0 rgb:f out.png
Testé sur Ubuntu 16.04, ImageMagick 6.8.9.