GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo ver datos binarios sin procesar como una imagen con ancho y alto dados?

Para ver los "datos binarios sin procesar", usaría el comando de volcado hexadecimal 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

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 formato comprensible para un visor de imágenes

Si lo anterior no puede hacer el trabajo, investigaría escribiendo un pequeño script Perl


Está bien, gnuplot puede hacerlo.

http://gnuplot.sourceforge.net/demo_4.4/image.html


convert de ImageMagick puede hacerlo.

Por ejemplo, una escala de grises 2x3 de 8 bits:

printf '\x00\xFF\x88\xFF\x00\xFF' > f

Entonces:

convert -depth 8 -size 3x2+0 gray:f out.png

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 es f , y el formato es gray , tal como se define en http://www.imagemagick.org/script/formats.php Esta extraña notación se usa porque ImageMagick generalmente determina el formato a partir de la extensión, pero aquí no hay extensión.

El problema ahora es cómo ver la salida. Un eog directo :

eog out.png

no es muy bueno porque la imagen es muy pequeña, y si haces mucho zoom eog utiliza un algoritmo de visualización que mezcla píxeles, lo 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 uno de los píxeles.
  • convert out.png -scale 300x200 out2.png . -scale se necesita en lugar de -resize , desde -resize mixeles píxeles hacia arriba como eog por defecto.

Salida:

Ejemplo RGB:

printf '\xFF\x00\x00\x00\xFF\x00\x00\x00\xFF' > f
convert -depth 8 -size 3x1+0 rgb:f out.png

Probado en Ubuntu 16.04, ImageMagick 6.8.9.


Linux
  1. Cómo ver metadatos de imágenes en Linux

  2. Cómo configurar LogAnalyzer con Rsyslog y MySQL

  3. ¿Cómo mover archivos y ver el progreso (por ejemplo, con una barra de progreso)?

  4. CentOS / RHEL 6:Cómo extraer la imagen de initramfs y editarla/verla

  5. Cómo ver el rendimiento pasado con sar en Linux

Cómo ver las estadísticas del sistema Linux con Saidar

Cómo ver el uso del disco con Duf en Linux y Unix

Cómo ver datos con el comando Tail en Linux

Cómo instalar y usar Okteta para archivos de datos RAW en Linux

Cómo Multi-Master MySQL con Percona y Keepalived

Cómo instalar y configurar WordPress con Ansible