android中drawable bitmap canvas paint的转换和区别

1.概念区别:

    Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。

    Drawable - 作为Android平下通用的图形对象,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。

    Canvas - 名为画布,我们可以看作是一种处理过程,使用各种方法来管理Bitmap、GL或者Path路径,同时它可以配合Matrix矩阵类给图像做旋转、缩放等操作,同时Canvas类还提供了裁剪、选取等操作。

    Paint - 我们可以把它看做一个画图工具,比如画笔、画刷。他管理了每个画图工具的字体、颜色、样式。
如果涉及一些Android游戏开发、显示特效可以通过这些底层图形类来高效实现自己的应用。


2.转换方法:

1)Bitmap 转化为 byte

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. ByteArrayOutputStream out = new ByteArrayOutputStream();  
  2. bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);  
  3. byte[] array= out.toByteArray();  

2)byte转化为bitmap
[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. final ContentResolver contentResolver = context.getContentResolver();  
  2. final PackageManager manager = context.getPackageManager();  
  3. final Cursor c = contentResolver.query(uri, nullnullnullnull);  
  4. final int icon3DIndex = c.getColumnIndexOrThrow(ColumnName);  
  5. byte[] data = c.getBlob(icon3DIndex);  
  6. Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);  

3)bitmap 转换 drawable
[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. Bitmap bitmap = new Bitmap(...); Drawable drawable = new BitmapDrawable(bitmap);  
  2. //Drawable drawable = new FastBitmapDrawable(bitmap);  

4)Drawable to Bitmap
 a. BitmapDrawable, FastBitmapDrawable直接用getBitmap
 b. 其他类型的Drawable用Canvas画到一个bitmap上
      
[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. Canvas canvas = new Canvas(bitmap)  
  2.       drawable.draw(canvas);  
  3.       Drawable d = ImagesList.get(0);  
  4.       Bitmap bitmap =  ((BitmapDrawable)d).getBitmap();  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值