¿Existe un programa para Linux que pueda mostrar datos binarios sin procesar?
Cada byte en mis archivos binarios representa un píxel, por lo que sería muy útil si existiera algo como esto donde pudiera decir
program_name --input=dat001.bin --width=200 --height=100
y mostraría los píxeles.
Me pregunto si gnuplot, se puede utilizar para esto ...?
hd
para formatear. Luego pides ver una imagen. Si se trata de una imagen, tendrá un formato de imagen (como bmp) que, como mínimo, tendrá un encabezado que identifica el formato, el ancho, la altura, la profundidad de color y quizás también una paleta de colores. adjunto.Respuestas:
Para ver los "datos binarios sin procesar", usaría el comando de volcado hexadecimal
hd
ohexdump
No conozco ningún formato de imagen que consista en bytes no estructurados: ¿los datos son valores RGB de 8 bits? Si el archivo contiene 30000 bytes, ¿es RGB para 100x100 píxeles o RGB para 50x200 píxeles o RGB para 200x50 píxeles o algo más? ¿Hay una paleta? ¡Tienes que saber algo sobre la organización de los datos!
Para verlo como una imagen, usaría las utilidades de NetPBM o tal vez ImageMagick para convertirlo a un formulario entendido por un visor de imágenes
Si lo anterior no puede hacer el trabajo, investigaría escribir un pequeño script de Perl
fuente
yum search hd
en mi escritorio Fedora, y no lo tenía.hexdump
. En SuSE está en elutil-linux
paquete.hexdump
en Arch.De acuerdo, gnuplot puede hacerlo.
http://gnuplot.sourceforge.net/demo_4.4/image.html
fuente
convert
de ImageMagick puede hacerlo.Por ejemplo, una escala de grises 2x3 de 8 bits:
Luego:
Explicación del comando:
-depth 8
: cada color tiene 8 bits-size 2x3+0
:2x3
imagen.+0
significa comenzar en el desplazamiento 0 en el archivo. Si hay encabezados de metadatos, puede omitirlos con el desplazamiento.gray:f
: el archivo de entrada esf
, y el formato esgray
, como se define en http://www.imagemagick.org/script/formats.php Esta notación extraña se usa porque ImageMagick generalmente determina el formato de la extensión, pero aquí no hay extensión .El problema ahora es cómo ver la salida. Un directo
eog
:no es muy bueno porque la imagen es demasiado pequeña, y si se
eog
acerca mucho, utiliza un algoritmo de visualización que mezcla píxeles, que es mejor para la mayoría de las imágenes, pero no en nuestro caso. Encontré dos posibilidades:gimp out.png
. Los editores de imágenes deben mostrar cada píxel.convert out.png -scale 300x200 out2.png
.-scale
es necesario en lugar de hacerlo-resize
, ya que los-resize
píxeles mixels se elevan de manera muy similareog
a la predeterminada.Salida:
Ejemplo RGB:
Probado en Ubuntu 16.04, ImageMagick 6.8.9.
fuente
/tmp/tex1.dat
), puede ver la imagen convertida directamente con Imagemagickdisplay
como imagen de 128x256 píxeles condisplay -depth 8 -size 128x256+0 RGBA:/tmp/tex1.dat
-endian
opción, pero parece que funciona como-depth 16
, la imagen es muy oscuraSi no quiere verlo directamente, sino convertirlo, la utilidad de conversión puede hacer esto:
Para leer desde stdin, suponiendo 320 x 200 píxeles, gris de 8 bits, encabezado de 0, guardando en pic.png en formato PNG.
fuente
gray:-
significa formatogray
y-
medios de stdin. Por lo tanto, el comando actual se cuelga esperando stdin. Lo he explicado más en mi respuesta: superuser.com/a/978432/128124