cómo leer / escribir un bloque jpeg MCU prima a partir de una imagen? [.Net preferido] [tal vez utilizando una biblioteca de imágenes tercera parte]

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

Pregunta

quiero leer los datos de imágenes en bruto de un archivo JPEG para que pueda manipularla sin perder calidad cuando hacerlo.
i tomó un vistazo a la biblioteca LibJpeg.Net http://bitmiracle.com/libjpeg .
pero hay una gran cantidad de código y no podía encontrar nada de lectura / escritura de bloques en bruto.
sobre todo quiero poner en práctica sin pérdida de edición de una imagen JPEG y me preguntaba cómo hacerlo?
http://en.wikipedia.org/wiki/Jpeg#Lossless_editing
gracias

Actualización:

básicamente lo que quiero hacer es acceder a los datos del bloque jpeg como una especie de matriz para que pueda leer los datos.
y luego quiero crear un nuevo jpeg y acceso a algún tipo de arreglo de datos de bloques que puedo llenar con filas de otras imágenes.
las tareas parece fácil, pero el problema es que la documentación de libJpeg.net no es tan clara.
he llegado a este estado de código ahora.

var cinfo = new BitMiracle.LibJpeg.Classic.jpeg_decompress_struct();
cinfo.jpeg_stdio_src(new System.IO.FileStream(@"C:\File.jpg", System.IO.FileMode.Open));
cinfo.jpeg_read_header(true);
cinfo.jpeg_start_decompress();

pero eso es todo, no sé dónde encontrar esa matriz de MCU bloques o si estoy aún leyendo la estructura correcta

¿Fue útil?

Solución

Tal vez BitMiracle.LibJpeg.Classic.jpeg_decompress_struct.jpeg_read_raw_data () hará lo que usted necesita.

También puede querer examinar la aplicación JpegCodec en LibTiff.Net . Que utiliza códec LibJpeg.Net para diversos fines. La lectura de los datos JPEG sin comprimir es uno de ellos.

exención de responsabilidad: yo soy uno de los encargados del mantenimiento de la biblioteca

.

Otros consejos

No estoy seguro de que jpeglib tiene funciones públicas para eso. Apoyan transformaciones sin pérdida en la jtransform_execute_transformation, pero sólo tienen rotate90 / 280/2780, flip, recortar y transposición.

Vas a tener que leer la fuente de esa función para averiguar cómo se pone los bloques. Una rápida mirada muestra que utilizando

srcinfo->mem->access_virt_barray

¿Qué es una función PTR-a-, donde srcinfo es un j_decompress_ptr. Se pone un JBLOCKARRAY de eso.

Me gustaría tratar de leer do_flip_v que debe ser una transformación fácil de entender.

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