ste*_*ter 25 android bitmap mutable out-of-memory android-canvas
我正在从像这样的资源加载位图:
Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image);
Run Code Online (Sandbox Code Playgroud)
我想要做的是在我的绘制方法中将它绘制到主画布之前对位图进行一些更改(因为当它不会改变时,在我的主循环中重复大量绘制似乎很浪费).我正在使用以下内容对位图进行更改:
Canvas c = new Canvas(mBackground);
c.drawARGB(...); // etc
Run Code Online (Sandbox Code Playgroud)
所以我自然会得到一个例外
java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor
Run Code Online (Sandbox Code Playgroud)
所以为了避免这种情况,我制作了位图的副本,以便它是可变的
Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image).copy(Bitmap.Config.ARGB_8888, true);
Run Code Online (Sandbox Code Playgroud)
哪个避免了问题,但它有时会导致OutOfMemoryExceptions,知道更好的方法来实现我想要的东西吗?
KNf*_*rPn 24
在选项中使用decodeResource(Resources res, int id, BitmapFactory.Options opts)和指定inMutable.
http://developer.android.com/reference/android/graphics/BitmapFactory.html
Mos*_*oss 11
有几种方法可以创建它的副本.这个主题可能对你有所帮助:http://www.anddev.org/how_to_modify_the_image_file-t513.html
| 归档时间: |
|
| 查看次数: |
30829 次 |
| 最近记录: |