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]
-
02-10-2019 - |
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
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.