
上面的API就是设置你要画图时保存图的BITMAP,你画的东西就在BITMAP中。这个bitmap可以通过BitmapcreateBitmap(width, height, config)来新建,而不是你从资源里加载的。
先setDrawingCacheEnabled(true);
你要显示的都显示出来后buildDrawingCache();
最后Bitmap b=getDrawingCache();
就ok了,这样就截屏了
用到的不仅仅包括png、gif、9png、jpg和各种Drawable系对象,还包括位图Bitmap
的处理也经常是影响着一个程序的高效性和健壮性。
为什么不直接用Bitmap传输?
位图文件虽好,但是非压缩格式,占用较大存储空间。
Bitmap主要方法有:获取图像宽高、释放,判断是否已释放和是否可修改,压缩、创建制定位图等功能
用于从不同的数据源(如文件、输入流、资源文件、字节数组、文件描述符等)解析、创建Bitmap对象
允许我们定义以何种方式如何读到内存。
推荐阅读: Android - Bitmap-内存分析
注意事项:
decodeFileDescriptor比decodeFile高效
查看源码可以知道
替换成
建议采用decodeStream代替decodeResource。
因为BitmapFactorydecodeResource 加载的可能会经过缩放,该缩放目前是放在 java 层做的,效率比较低,而且需要消耗 java 层的内存。因此,如果大量使用该接口加载,容易导致OOM错误,BitmapFactorydecodeStream 不会对所加载的进行缩放,相比之下占用内存少,效率更高。
这两个接口各有用处,如果对性能要求较高,则应该使用 decodeStream;如果对性能要求不高,且需要 Android 自带的自适应缩放功能,则可以使用 decodeResource。
推荐阅读:[ BitmapFactorydecodeResource加载缩小的原因及解决方法
canvas和Matrix可对Bitmap进行旋转、放缩、平移、切错等 *** 作
可以用BitmaponCreateBitmap、Canvas的clipRect和clipPath等等方式
推荐阅读: android自定义View学习4--图像剪切与变换
对初始化Bitmap对象过程中可能发生的OutOfMemory异常进行了捕获。如果发生了OutOfMemory异常,应用不会崩溃,而是得到了一个默认的Bitmap图。
如果不进行缓存,尽管看到的是同一张文件,但是使用BitmapFactory类的方法来实例化出来的Bitmap,是不同的Bitmap对象。缓存可以避免新建多个Bitmap对象,避免内存的浪费。
如果像素过大,使用BitmapFactory类的方法实例化Bitmap的过程中,需要大于8M的内存空间,就必定会发生OutOfMemory异常。
可以将缩小,以减少载入过程中的内存的使用,避免异常发生。
推荐阅读:
Bitmap详解与Bitmap的内存优化
Bitmap bitmap = BitmapcreateBitmap(width, height, BitmapConfigARGB_8888);
Canvas canvas = new Canvas(bitmap);
然后在canvas上面进行绘制就行了 绘制的东西就会显示到bitmap上
以上就是关于如何将Canvas 上的内容转换为一张Bitmap全部的内容,包括:如何将Canvas 上的内容转换为一张Bitmap、Bitmap使用详解、如何将Canvas 上的内容转换为一张Bitmap-Android开发问答等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)