تؤدي الصور ذات الأبعاد الكبيرة إلى OufOfMemoryException

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

  •  28-10-2019
  •  | 
  •  

سؤال

أنا أستخدم OpenMap ولا بد لي من تحميل صور كبيرة الحجم للغاية.
حاولت تحميل هذه الصور كنقطية كبيرة والتي فشلت مع OufOfMemoryException.في وضع التصحيح ، يخبرني مُنشئ الطبقة أن أبعاد الصورة كبيرة جدًا.

في قائمة بريدية على OpenMap ، وجدت MyJAIPlugin ، والذي يسمح لي بتحميل وعرض ملفات GeoTiff.

كيف يمكنني إظهار 300 ميغا بايت GeoTiff في OpenMap؟

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

المحلول

كان لدي نفس الموقف تقريبًا عن طريق تحميل خرائط عالية الدقة بحجم 690 ميجابايت على الأقل.

لقد استخدمت أيضًا JAIPlugIn من القائمة البريدية وداخليًا يستخدمون OMScalingRaster witch يعمل مع BufferedImage. هذا يحد من حجم صورتك ويتسبب في ظهور رسالة التصحيح.

لقد قمت بحلها عن طريق تعديل OMScalingRaster. لقد غيرت BufferedImage إلى TiledImage للتعامل مع الصور الكبيرة وإصلاح الأخطاء القادمة. من المهم هنا تغيير المقياس إلى أسلوب (عرض هذا المشروع) ، لتوسيع نطاقه باستخدام JAI.

يمكنني الآن تحميل الملف ويتم عرضه على الخريطة. ولكن إذا كنت تقوم بالتصغير كثيرًا ، فسيؤدي ذلك إلى ظهور OutOfMemoryException لأنه في تعديلي أقوم بعمل صورة فرعية لجزء الصورة الذي سيكون مرئيًا وأعطيه صورة BufferedImage لـ OMRaster.

هنا هو الوضع. في نهاية المقياس إلى الطريقة:

Genacodicetagpre

بالنسبة للأخطاء الأخرى عن طريق استبدال BufferedImage بـ TiledImage ، استخدم طرق TiledImage المكافئة. ولكن لحفظ الذاكرة ، يجب عليك استخدام مُنشئ TiledImage مع علامة sharedDataBuffer= true.

للحصول على مثال على هذا الوضع. يمكنني التعامل مع الخرائط (مضغوطة 690 ميجابايت) بمقياس 1: 50000 ويمكنني التصغير إلى 1: 600000 قبل أن تذكر الطبقة نفاد الذاكرة.

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