मैं कुछ विश्वविद्यालय परियोजना पर काम कर रहा हूं और स्मृति समस्या से फंस गया हूं।बड़े बिटमैप्स (3 जीबी तक) पर प्रसंस्करण
Bitmap bmp = new Bitmap(pathToFile);
मुद्दा यह है कि नव निर्मित बिटमैप वस्तु रैम 3,5GB जो कुछ मैं नहीं समझ सकता है के बारे में उपयोग करता है (कि है: मैं एक बिटमैप जो नीचे दिए गए कोड के साथ HDD पर 1,5GB के बारे में लेता है लोड वास्तव में बड़ा रैपर: ई)। मुझे पिक्सेल सरणी पर जाना होगा, और बिटमैप क्लास का उपयोग वास्तव में सहायक है (मैं बाद में लॉकबिट्स() विधि का उपयोग करता हूं, और सर बाइट प्रति बाइट को संसाधित करता हूं) लेकिन इस मामले में यह कुल अवरोधक है। तो यहां मेरा प्रश्न है:
अतिरिक्त 2 जीबी उधार दिए बिना पिक्सेल सरणी निकालने का कोई आसान तरीका है?
मैं आवश्यक सरणी निकालने के लिए सी # का उपयोग कर रहा हूं, जिसे बाद में सी ++ में संसाधित किया जाता है - शायद मैं सी ++ में सभी आवश्यक डेटा निकाल सकता हूं (लेकिन रूपांतरण समस्या यहां दिखाई देती है - मैं 24 बीजीआर प्रारूप पर ध्यान केंद्रित कर रहा हूं)?
पीएस: मुझे पूरे बिटमैप को स्मृति में रखना होगा ताकि इसे भागों में विभाजित करना कोई समाधान न हो।
पीएस 2: बस कुछ मुद्दों को स्पष्ट करने के लिए: मुझे फ़ाइल एक्सटेंशन और फ़ाइल प्रारूप के बीच अंतर पता है। लोड की गई फ़ाइल असम्पीडित बिटमैप 3 बाइट्स प्रति पिक्सेल आकार ~ 1.42 जीबी (16k x 32k पिक्सेल) है, तो बिटमैप ऑब्जेक्ट दो गुना बड़ा क्यों है? किसी भी डिकंप्रेसरिंग मुद्दे और अन्य प्रारूप में कनवर्ट नहीं हो रहा है।
संभावित डुप्लिकेट: [http://stackoverflow.com/questions/569889/how-do- i-use-big-bitmaps-in-net? rq = 1] (http://stackoverflow.com/questions/569889/how-do-i-use-large-bitmaps-in-net?rq=1) – Jason
@ जेसन: हाँ, लेकिन उस प्रश्न का कोई वास्तविक जवाब नहीं है। पता नहीं क्यों उन्होंने स्मृति मैप की गई फ़ाइलों की निगरानी की है। –
बिटमैप किस एन्कोडिंग का उपयोग करता है? क्या आरएलई संपीड़न है? –