2011-07-29 18 views
10

Sé que ya hay muchas herramientas para esto. Mi objetivo es aprender Para que pueda leer un archivo JPEG con fopen(), sé que este es un archivo binario. ¿Entonces qué? Sé que puedo aprender las especificaciones JPEG. Pero no parece decir cuál es la estructura del archivo jpeg binario.Cómo escribir un decodificador de archivos JPEG desde cero

Este archivo contiene ceros y unos ¿Cómo puedo transformar esto o cómo puedo saber qué cadena de bits significa qué?

me he encontrado con este ejemplo: nano jpeg decoder pero es bastante difícil de leer el código

Gracias de antemano

PS: This princeton guy has done a project on this which provides a good reference

+0

La estructura parece bastante relajada. Me gustaría ver respuestas de cualquier persona con un profundo conocimiento de cómo trabajar con este formato. –

+0

El enlace de Princetone está muerto. Supongo que se graduaron ... –

+1

Se graduó Guy de Princeton y su proyecto PDF se puede encontrar en su sitio web ahora: http://www.ctralie.com/PrincetonUGRAD/Projects/JPEG/jpeg.pdf –

Respuesta

20

This página tiene mucha información sobre cómo procesar un archivo jpeg. Además, puedes echarle un vistazo al my own attempt al escribir un decodificador jpeg en Python.

Los nombres de las variables cortas en el programa a menudo corresponden directamente a las variables del estándar. Entonces, si tienes el estándar listo, te será de gran ayuda. Se llama ITU-1150 y está disponible gratuitamente en Internet.

+1

Al tratar su código Python como pseudocódigo , esto puede ser justo lo que OP necesita. –

+0

@luser Esa fue mi motivación original para escribirlo. Creé un prototipo en Python y luego lo traduje a C, pero nunca pude hacerlo. :) – onemasse

+0

Si pudieras explicarnos el código con algunos comentarios habladores, eso ganaría la recompensa. Posiblemente aceptación, también, si OP vuelve a verificar :) –

13

Jpegs son difícil si estás empezando. Necesita trabajar con tablas huffmann, tener algún tipo de función de transformación coseno discreta inversa rápida y la capacidad de interpretar tablas de cuantificación.

http://en.wikipedia.org/wiki/JPEG es bastante útil.

Si desea comenzar con algo más simple, mire PNG. El formato es básicamente un encabezado, seguido de un grupo de longitud variable, fragmentos y luego un flujo zlib. Descomprimir eso te deja con píxeles casi sin procesar, pero se han filtrado. Desfiltrar es fácil.

Cuestiones relacionadas