¿Hay alguna manera de inferir qué formato de imagen tiene un archivo sin leer el archivo completo?

StackOverflow https://stackoverflow.com/questions/52739

  •  09-06-2019
  •  | 
  •  

Pregunta

¿Existe una buena manera de ver qué formato tiene una imagen sin tener que leer el archivo completo en la memoria?

Obviamente, esto variará de un formato a otro (estoy particularmente interesado en los archivos TIFF), pero ¿qué tipo de procedimiento sería útil para determinar qué tipo de formato de imagen es un archivo sin tener que leerlo completo?

PRIMA:¿Qué pasa si la imagen es una cadena codificada en Base64?¿Alguna forma confiable de inferirlo antes de decodificarlo?

¿Fue útil?

Solución

La mayoría de los formatos de archivos de imagen tienen bytes únicos al principio.el unix file El comando mira el inicio del archivo para ver qué tipo de datos contiene.Consulte el artículo de Wikipedia sobre Números mágicos en archivos. y magicdb.org.

Otros consejos

Seguro que lo hay.Como han mencionado otros, la mayoría de las imágenes comienzan con algún tipo de "Magia", que siempre se traducirá en algún tipo de datos Base64.Los siguientes son un par de ejemplos:

Un mapa de bits comenzará con Qk3

Un JPEG comenzará con /9j/

Un GIF comenzará con R0l (Ese es un cero como segundo carácter).

Etcétera.No es difícil tomar los diferentes tipos de imágenes y descubrir en qué codifican.Solo tenga cuidado, ya que algunos tienen más de una pieza de magia, por lo que debe tenerlos en cuenta en su 'código de traducción' B64.

Cualquiera file en la línea de comandos *nix o leyendo los bytes iniciales del archivo.La mayoría de los archivos vienen con un encabezado único en los primeros bytes.Por ejemplo, el encabezado de TIFF se parece a esto:

0x00000000: 4949 2a00 0800 0000
Para obtener más información sobre el formato de archivo TIFF, específicamente si desea saber qué significan esos bytes, vaya aquí.

Un sitio completo de formatos de archivos está disponible en:

http://www.wotsit.org

Los TIFF comenzarán con II o MM (ordenación de bytes de Intel o Motorola).
La especificación TIFF 6 se puede descargar aquí y no es demasiado difícil de seguir

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top