comment lire / écrire un jpeg brut bloc MCU d'une image? [.Net préféré] [en utilisant peut-être une bibliothèque d'images 3ème partie]

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

Question

Je veux lire les données d'images brutes d'un jpeg pour que je puisse le manipuler sans perdre la qualité en le faisant.
Je pris un coup d'œil à la bibliothèque LibJpeg.Net http://bitmiracle.com/libjpeg .
mais il y a beaucoup de code et couldnt quoi que ce soit au sujet de trouver la lecture / écriture des blocs bruts.
surtout que je veux mettre en œuvre l'édition sans perte d'une image jpeg et je me demandais comment le faire?
http://en.wikipedia.org/wiki/Jpeg#Lossless_editing
merci

Mise à jour:

essentiellement ce que je veux faire est d'accéder aux données de bloc jpeg comme une sorte de tableau pour que je puisse lire les données.
puis je veux créer un nouveau jpeg et l'accès une sorte de tableau de données de bloc que je peux remplir avec des lignes d'autres images.
les tâches semble facile, mais le problème est que la documentation de libJpeg.net n'est pas claire.
Je suis arrivé à cet état code maintenant.

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

mais qui est, je ne sais pas où trouver ce tableau de blocs MCU ou si je suis en train de lire, même la bonne structure

Était-ce utile?

La solution

Peut-être BitMiracle.LibJpeg.Classic.jpeg_decompress_struct.jpeg_read_raw_data () fera ce dont vous avez besoin.

Vous pouvez également consulter la mise en œuvre JpegCodec LibTiff.Net . Qui utilise le codec LibJpeg.Net à des fins diverses. La lecture des données non compressées jpeg est parmi eux.

Disclaimer: Je suis l'un des mainteneurs de la bibliothèque

.

Autres conseils

Je ne suis pas sûr que jpeglib a des fonctions publiques pour cela. Ils prennent en charge les transformations sans perte dans le jtransform_execute_transformation, mais seulement ont rotate90 / 280/2780, chiquenaude, culture et transposez.

Vous devrez lire la source de cette fonction pour savoir comment il obtient les blocs. Un coup d'oeil rapide montre à l'aide de

srcinfo->mem->access_virt_barray

Ce qui est un PTR-à-fonction, où srcinfo est un j_decompress_ptr. Il obtient un JBLOCKARRAY de cela.

Je voudrais essayer de lire do_flip_v qui devrait être une transformation facile à comprendre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top