Decodificar JPEG para obtener datos sin comprimir

votos
3

Quiero decodificar archivos JPEG y obtener salida decodificada sin comprimir en formato BMP / RGB. Estoy usando GNU / Linux y C / C ++.

Eché un vistazo a libjpeg, pero parecía que no había ninguna buena documentación disponible. Entonces mis preguntas son:

  1. ¿Dónde está la documentación sobre libjpeg?
  2. ¿Puede sugerir otras bibliotecas de descompresión jpeg basadas en C?
Publicado el 17/06/2009 a las 20:33
fuente por usuario
En otros idiomas...                            


5 respuestas

votos
6

La documentación para libjpeg viene con el código fuente. Dado que aún no lo has encontrado:

Descargue el archivo de código fuente y abra el archivo libjpeg.doc . Es un archivo ASCII simple, no un documento de Word, así que mejor abrirlo en el bloc de notas u otro editor ASCII.

Hay algunos otros archivos .doc también. La mayoría de ellos no son tan interesantes sin embargo.

Lamentablemente, no puedo recomendar ninguna otra biblioteca además de libjpeg. Intenté un par de alternativas, pero Libjpeg siempre ganó. Es bastante fácil trabajar una vez que tienes lo básico hecho. También es la biblioteca jpeg más completa y más estable que hay.

Respondida el 17/06/2009 a las 20:54
fuente por usuario

votos
2

Debería ver Qt's QImage. Tiene una interfaz bastante fácil que hace que esta tarea sea realmente fácil. La configuración es bastante simple para cada plataforma.

Si Qt es excesivo, puedes probar Magick ++ http://www.imagemagick.org/Magick++/ . Es compatible con operaciones similares y también es adecuado para ese tipo de tareas. La última vez que lo usé, tuve problemas con las dependencias en Windows, pero no recuerdo muchos problemas en Linux.

Para la clase de imagen de Magick ++, la función que probablemente desee es getConstPixels.

Respondida el 17/06/2009 a las 20:46
fuente por usuario

votos
2

MagickWand es la API C para ImageMagick:

http://imagemagick.org/script/magick-wand.php

No lo he usado, pero la documentación parece bastante extensa.

Respondida el 17/06/2009 a las 20:37
fuente por usuario

votos
1

Una solución un poco fuera de lo común es adquirir una copia de las herramientas de netpbm , que transforman las imágenes de casi cualquier formato a cualquier otro formato a través de uno de varios formatos intermedios muy simples. Funcionan bien desde el shell, y con mayor frecuencia se utilizan en tuberías para leer una imagen arbitraria, realizar una operación en ella y escribirla en algún otro formato.

Los formatos de pbm pueden ser tan simples como un encabezado ASCII simple seguido de los datos RGB en formato ASCII o binario. Están destinados a ser lo suficientemente simples como para usarlos sin necesidad de una biblioteca para implementar.

JPEG es compatible con netpbm con filtros de lectura y escritura que se implementan sobre libjpeg.

Respondida el 17/06/2009 a las 21:38
fuente por usuario

votos
1

Tengo un código que puede copiar (o simplemente usar como referencia) para cargar una imagen JPEG usando la biblioteca libjpeg.

Puede navegar por el código aquí: http://code.google.com/p/kgui/source/browse/trunk/kguiimage.cpp

Solo busque la función LoadJPGImage .

El código está configurado para manejar el enlace c ++ de mi clase DataHandle a él para cargar la imagen, de esa manera la imagen puede ser un archivo o datos que ya están en la memoria o lo que sea.

Respondida el 17/06/2009 a las 21:34
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more