كتابة ملفات BMP باستخدام databuffer.type_float أو databuffer.type_double في java
سؤال
واجهت مشكلة في العمل مع فصول الصور في جافا.
أقوم بإنشاء صورة مخزنة مع databuffer.type_double. كل هذا يعمل بشكل جيد في الذاكرة (على ما أظن). لكن المشكلة تبدأ عندما أحاول كتابتها باستخدام imageio.write.
في البداية ، لم أحصل على استثناء على الإطلاق ، وبدلاً من ذلك ، كنت أحصل على ملف إخراج فارغ لمشاكلي ..
بعد قليل من التورط في الكود ، اكتشفت أن كاتب BMP لا يدعم نوع الملفات من النوع.
From: BMPImageWriterSpi.canEncodeImage:
if (dataType < DataBuffer.TYPE_BYTE || dataType > DataBuffer.TYPE_INT)
return false;
لذا فإن سؤالي هو ، هل لدى أي شخص طريقة لكتابة هذا النوع من الصور على القرص؟ أي وثائق أو تعليمي ، أو رابط سيكون مفيدًا.
شكرا ، باسل دسوزا
المحلول
نظرًا لأن تنسيق BMP لا يستخدم أي تمثيلات نقطة عائمة ، فليس من المنطقي استخدام بيانات نقطة عائمة لتمثيل صورة ستكتبها كصورة BMP. هل تحتاج حقا للقيام بذلك؟ لماذا لا ints؟
ال جافادوك ل DataBuffer.TYPE_DOUBLE
يشير إلى أنه غير مخصص حاليًا للاستخدام.