كيف تقرأ/كتابة كتلة JPEG MCU RAW من صورة؟ [.NET preffered] [ربما باستخدام مكتبة iamge الطرف الثالث

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

سؤال

أريد قراءة بيانات الصورة الخام لـ JPEG حتى أتمكن من معالجة ذلك دون فقدان أي جودة عند القيام بذلك.
ألقيت نظرة على مكتبة libjpeg.net http://bitmiracle.com/libjpeg .
ولكن هناك الكثير من التعليمات البرمجية ولم يستطع العثور على أي شيء عن القراءة/كتابة الكتل الخام.
في الأساس ، أريد تنفيذ التحرير بدون خسارة لصورة JPEG وكنت أتساءل عن كيفية القيام بذلك؟
http://en.wikipedia.org/wiki/jpeg#lossless_editing
شكرًا

تحديث:

في الأساس ما أريد القيام به هو الوصول إلى بيانات كتلة JPEG كنوع من الصفيف حتى أتمكن من قراءة البيانات.
وبعد ذلك أريد إنشاء JPEG جديد والوصول إلى نوع من مجموعة بيانات الكتلة التي يمكنني ملؤها بالصفوف من صور أخرى.
تبدو المهام سهلة ولكن المشكلة هي أن وثائق libjpeg.net ليست واضحة.
لقد وصلت إلى هذه الحالة من الكود الآن.

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

لكن هذا هو الحال ، لا أعرف أين أجد هذه المجموعة من كتل MCU أو إذا كنت أقرأ الهيكل الصحيح حتى

هل كانت مفيدة؟

المحلول

ربما bitmiracle.libjpeg.classic.jpeg_decompress_struct.jpeg_read_raw_data () سيفعل ما تحتاجه.

قد ترغب أيضًا في مراجعة تنفيذ JPegCodec في libtiff.net. أن برنامج الترميز يستخدم libjpeg.net لأغراض مختلفة. قراءة بيانات JPEG غير المضغوطة هي من بينها.

إخلاء المسئولية: أنا أحد المشرفين في المكتبة.

نصائح أخرى

لست متأكدًا من أن JPeglib لديه وظائف عامة لذلك. إنهم يدعمون التحولات بدون خسارة في JTRANSForm_Execute_Transformation ، ولكنها فقط تدوير 90/280/2780 ، الوجه ، المحاصيل ، والتحول.

سيتعين عليك قراءة مصدر هذه الوظيفة لمعرفة كيفية حصولها على الكتل. نظرة سريعة تظهر عليه استخدام

srcinfo->mem->access_virt_barray

وهو ptr-to-function ، حيث srcinfo هو j_decompress_ptr. يحصل على JBLOCKARRAY من ذلك.

سأحاول القراءة do_flip_v الذي يجب أن يكون تحولًا سهلاً لفهمه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top