2012-08-28 13 views
10

Me interesa un nivel bajo de cómo se almacenan los datos de imagen. Por ejemplo, uno puede levantar una imagen en Windows y obtener información sobre la imagen (cámara utilizada, fecha, etc.).Cómo se almacenan los datos en un archivo de imagen

En un nivel general (estoy seguro de que png, jpeg etc. difieren) ¿las imágenes tienen algún tipo de sección de encabezado donde se definen las propiedades, y posiblemente una sección del cuerpo que especifica el color de un píxel específico a través de una matriz multidimensional?

¿Cómo se vería una fuente de imagen si pudiera ver la fuente de manera similar a una página web? Si abro un archivo JPEG en mi computadora, las primeras líneas parecen XML.

+4

http://en.wikipedia.org/wiki/Image_file_formats - siga los enlaces de cualquier formato en particular que desee conocer, y consulte la sección de "detalles técnicos" en la página de cada formato. – DGH

+3

Las imágenes son binarias. Si abres un jpeg en un editor de texto que admita el modo HEX, podrás ver el * tripas * de él, por así decirlo, mejor así http://snag.gy/X1b7B.jpg. También consulte EXIF ​​para obtener detalles sobre cómo la mayoría de las cámaras almacenan información en el encabezado de los archivos jpeg, por ejemplo. http://en.wikipedia.org/wiki/Exchangeable_file_file_format –

+0

Cuando dice binario, los datos de píxel son binarios, supongo, pero los metadatos deben almacenarse en algún tipo de par de valores clave ¿no? Y supongo que podría ser xml, así que si intentas interpretar el archivo como texto ascii, verás ese par clave/valor (xml, por ejemplo), pero los datos del píxel binario se verán como jibberish. –

Respuesta

2

El XML que está viendo forma parte del Exchangeable image file format (or Exif). Si nos fijamos en el archivo en un editor hexadecimal debería ver como estos marcadores:

archivo JPEG Cada comienza a partir de valor binario '0xFFD8', termina por valor binario '0xFFD9'. Hay varios datos binarios 0xFFXX en datos JPEG, que se llaman como "Marcador", y significa el período de datos de información JPEG . 0xFFD8 significa SOI (Inicio de la imagen), 0xFFD9 significa EOI (Fin de la imagen).

Un archivo PNG siempre comenzará con these eight bytes: 0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A. Luego tiene un mecanismo similar al JPEG de usar marcadores de bytes para indicar secciones de datos. Lea la especificación completa here.

Cuestiones relacionadas