wie man einen rohen JPEG MCU Block aus einem Bild lesen / schreiben? [.Net bevorzugt] [vielleicht eine 3rd-Party-Bild-Bibliothek]

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

Frage

Ich mag die rohen Bilddaten eines JPEG zu lesen, so dass ich es ohne Verlust irgendeine Qualität manipulieren kann, wenn dies zu tun.
Ich nahm einen Blick auf die LibJpeg.Net Bibliothek http://bitmiracle.com/libjpeg .
aber es gibt eine Menge Code und könnte nicht finden, etwas über das Lesen / Schreiben von Rohblöcken.
in erster Linie möchte ich lossless Bearbeitung eines JPEG-Bildes implementieren und frage mich, wie es zu tun?
http://en.wikipedia.org/wiki/Jpeg#Lossless_editing
Dank

Update:

im Grunde, was ich tun möchte, ist die JPEG-Blockdaten als eine Art Array zuzugreifen, so dass ich die Daten lesen kann.
und dann will ich eine neue JPEG und Zugang irgendeine Art von Blockdaten-Array erstellen, dass ich mit den Zeilen von anderen Bildern füllen.
die Aufgaben scheinen einfach, aber das Problem ist, dass die Dokumentation von libJpeg.net ist nicht so klar.
Ich habe jetzt diesen Zustand des Code erreicht.

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

Aber das ist es, ich weiß nicht, wo das Array von MCU Blöcken finden oder, wenn ich auch die richtige Struktur lese

War es hilfreich?

Lösung

Vielleicht BitMiracle.LibJpeg.Classic.jpeg_decompress_struct.jpeg_read_raw_data () wird tun, was Sie brauchen.

Sie können auch JpegCodec Implementierung überprüfen in LibTiff.Net möchten. Dass Codec verwendet LibJpeg.Net für verschiedene Zwecke. Lesen unkomprimierte JPEG-Daten ist unter ihnen.

Disclaimer: Ich bin einer der Maintainer der Bibliothek

.

Andere Tipps

Ich bin nicht sicher, dass jpeglib öffentliche Funktionen für das hat. Sie unterstützen lossless Transformationen im jtransform_execute_transformation, aber nur haben rotate90 / 280/2780, Flip, Ernte und transponieren.

Sie müssen die Quelle dieser Funktion lesen, um herauszufinden, wie es um die Blöcke bekommt. Ein kurzer Blick zeigt es mit

srcinfo->mem->access_virt_barray

, die eine ptr-to-Funktion ist, wo srcinfo ein j_decompress_ptr ist. Es wird eine JBLOCKARRAY aus, dass.

Ich würde versuchen, do_flip_v zu lesen, die eine einfache Transformation sein sollten, zu verstehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top