Tôi tải một bitmap từ một nguồn tài nguyên như vậy:tải một nguồn lực để một bitmap có thể thay đổi
Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image);
Những gì tôi muốn làm là thực hiện một số thay đổi đối với bitmap trước Nó được vẽ vào khung chính trong tôi vẽ phương pháp (Có vẻ như lãng phí để lặp lại nhiều bản vẽ trong vòng lặp chính của tôi khi nó sẽ không thay đổi). Tôi đang làm cho những thay đổi bitmap như sau:
Canvas c = new Canvas(mBackground);
c.drawARGB(...); // etc
Vì vậy, tự nhiên tôi nhận được một ngoại lệ
java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor
Vì vậy, để tránh điều đó tôi đã thực hiện một bản sao của bitmap để nó có thể thay đổi
Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image).copy(Bitmap.Config.ARGB_8888, true);
Điều gì tránh vấn đề tuy nhiên đôi khi nó gây ra Ngoại lệ OutOfMemory, bạn có biết cách nào tốt hơn để đạt được những gì tôi muốn không?
sao chép vào trong bộ nhớ không làm việc cho tôi, nếu nó là hình ảnh ban đầu, tôi đã tìm ra cách sử dụng MappedByteBuffer, tôi đã viết blog nó ở đây: http: // sudarnimalan. blogspot.com/2011/09/android-convert-immutable-bitmap-into.html –