come leggere / scrivere un jpeg MCU blocco grezzo da un'immagine? [.Net preferito] [forse utilizzando una libreria di immagini 3a parte]

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

Domanda

Voglio leggere i dati di immagine grezzi di un jpeg modo che io possa manipolare senza perdere alcuna qualità quando farlo.
Ho dato un'occhiata alla biblioteca LibJpeg.Net http://bitmiracle.com/libjpeg .
ma c'è un sacco di codice e non potrebbe trovare nulla di lettura / scrittura di blocchi grezzi.
principalmente Voglio realizzare l'editing senza perdita di un'immagine jpeg e si chiedeva come farlo?
http://en.wikipedia.org/wiki/Jpeg#Lossless_editing
grazie

Aggiornamento:

Fondamentalmente quello che voglio fare è quello di accedere ai dati del blocco jpeg come una sorta di matrice in modo che io possa leggere i dati.
e poi voglio creare un nuovo jpeg e l'accesso una sorta di blocco serie di dati che posso riempire con le righe da altre immagini.
i compiti sembra facile ma il problema è che la documentazione di libJpeg.net non è chiaro.
ho raggiunto questo stato di codice di oggi.

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();

ma che è, non so dove trovare tale matrice di blocchi MCU o se sto ancora leggendo la giusta struttura

È stato utile?

Soluzione

Forse BitMiracle.LibJpeg.Classic.jpeg_decompress_struct.jpeg_read_raw_data () farà ciò che è necessario.

Si potrebbe anche voler controllare l'applicazione JpegCodec in LibTiff.Net . Che utilizza codec LibJpeg.Net per vari scopi. La lettura dei dati non compressi in formato JPEG è tra di loro.

Disclaimer: io sono uno dei manutentori della biblioteca

.

Altri suggerimenti

Non sono sicuro che jpeglib ha funzioni pubbliche per questo. Sostengono trasformazioni lossless nel jtransform_execute_transformation, ma hanno solo rotate90 / 280/2780, capovolgere, ritagliare e trasposizione.

Si dovrà leggere la fonte di quella funzione per scoprire come si ottiene i blocchi. Un rapido sguardo spettacoli usando

srcinfo->mem->access_virt_barray

che è una funzione PTR-to-, dove srcinfo è un j_decompress_ptr. Si ottiene un JBLOCKARRAY da questo.

Vorrei provare a leggere do_flip_v che dovrebbe essere una trasformazione facile da capire.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top