मैं बहुत की तरह एक संसाधन से एक बिटमैप लोड हो रहा हूँ करने के लिए एक संसाधन लोड हो रहा है:एक परिवर्तनशील बिटमैप
Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image);
क्या मैंने पहले यह में मुख्य कैनवास के लिए तैयार हो जाता है बिटमैप में कुछ परिवर्तन करने है क्या करना चाहते हैं मेरे ड्रा विधि (जैसा कि यह बदलने के लिए नहीं जा रहा है, मेरे मुख्य पाश में बहुत सारे ड्राइंग को दोहराना प्रतीत होता है)। मैं निम्नलिखित के साथ बिटमैप में परिवर्तन करने हूँ:
Canvas c = new Canvas(mBackground);
c.drawARGB(...); // etc
इसलिए स्वाभाविक रूप से मैं
java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor
तो बचने के लिए है कि मैं बिटमैप की एक प्रतिलिपि बना इतना है कि यह अस्थायी है एक अपवाद मिल
Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image).copy(Bitmap.Config.ARGB_8888, true);
जो समस्या से बचता है हालांकि यह कभी-कभी आउटऑफमेमरी अपवादों का कारण बनता है, मुझे जो चाहिए वह प्राप्त करने के किसी भी बेहतर तरीके से पता है?
प्रतिलिपि बनाई जा रही स्मृति मेरे लिए काम नहीं करता है अगर यह मूल छवि है अंदर, मैं एक तरह से MappedByteBuffer का उपयोग कर पाया, मैं इसे यहाँ ब्लॉग किया है: http: // sudarnimalan। blogspot.com/2011/09/android-convert-immutable-bitmap-into.html –