<wbr><wbr><wbr><wbr>Drawable -作为Android平下通用的图形对象,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。
<p><wbr><wbr><wbr><wbr>Bitmap -称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。</wbr></wbr></wbr></wbr></p>
<p><wbr>android在处理一写图片资源的时候,会进行一些类型的转换,现在有空整理一下:<br><br>
1、Drawable → Bitmap 的简单方法<wbr></wbr></wbr></p>
<p><strong>Drawable d = XXX;</strong></p>
<p><strong>BitmapDrawable<wbr> bd =(BitmapDrawable)d;</wbr></strong></p>
<p><strong>Bitmap<wbr> b =bd.getBitmap();</wbr></strong></p>
<p>可简化为:((BitmapDrawable)res.getDrawable(R.drawable.youricon)).getBitmap();<br></p>
<wbr><br>
Java代码<br>
public static Bitmap drawableToBitmap(Drawable drawable){<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr>Bitmap bitmap= Bitmap<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>.createBitmap(<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>drawable.getIntrinsicWidth(),<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>drawable.getIntrinsicHeight(),<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>drawable.getOpacity() != PixelFormat.OPAQUE ?Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);<wbr>//按指定参数创建一个空的Bitmap对象<br><wbr><wbr><wbr><wbr><wbr><wbr>Canvas canvas= new Canvas(bitmap);<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr>//canvas.setBitmap(bitmap);<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr>drawable.setBounds(0,0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr>drawable.draw(canvas);<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr>returnbitmap;<wbr><wbr><br>
}<wbr><wbr><br><br><br>
3.Bitmap→Drawable<wbr><wbr>的简单方法<br><strong style="font-weight:normal">BitmapDrawable bitmapDrawable= (BitmapDrawable)bitmap;<wbr><wbr><wbr><wbr><br>
Drawable drawable = (Drawable)bitmapDrawable;<wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></strong><wbr><wbr><br><wbr><wbr><wbr><br><strong><span style="font-weight:normal">Bitmap bitmap = newBitmap (...);<wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></span><br style="font-weight:normal">
Drawable drawable = new BitmapDrawable(bitmap);<wbr><wbr><br></wbr></wbr></strong><br><br>
3、从资源中获取Bitmap<br>
Java代码<br>
Bitmap bmp=BitmapFactory.decodeResource(getResources(),R.drawable.pic);<wbr><wbr><br><br>
4、Bitmap → Byte[]<br>
Java代码<br>
private byte[] Bitmap2Bytes(Bitmapbm){<wbr><wbr><br><wbr><wbr> ByteArrayOutputStream baos =new ByteArrayOutputStream();<wbr><br><wbr><wbr>bm.compress(Bitmap.CompressFormat.PNG, 100, baos);<br><wbr><wbr> returnbaos.toByteArray();<wbr><wbr><br>
}<wbr><wbr><br><br>
5、 byte[] → Bitmap<br>
Java代码<br>
private Bitmap Bytes2Bimap(byte[]b){<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>if(b.length!=0){<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> returnBitmapFactory.decodeByteArray(b, 0,b.length);<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>}<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>else{<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> returnnull;<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
分享到:
相关推荐
### Android中Drawable、Bitmap与byte[]之间的转换 在Android应用开发过程中,经常需要对图像资源进行处理,这就涉及到了不同图像格式之间的转换。本文将详细介绍`Drawable`、`Bitmap`及`byte[]`三者之间的转换方法...
在Android开发中,图片资源的处理是常见的需求之一,涉及到多种数据类型之间的转换,包括`Drawable`、`Bitmap`、`byte[]`等。本文将详细介绍这些类型之间的转换方法,以及如何实现灰度图像的转换。 ### 1. `...
在Android开发中,处理图像数据时,我们经常需要在Drawable、Bitmap、InputStream和byte数组之间进行转换。这些类型的转换在不同的场景下具有重要的作用,例如从网络加载图片、存储图片到本地或者显示在ImageView上...
在Android开发中,图片资源的处理是常见的需求之一,尤其涉及到不同格式间的转换,如Drawable、Bitmap、byte数组以及灰度图像的转换。这些转换在实际应用中具有重要意义,不仅能够优化内存使用,还能实现图像的高效...
以下是一些关于Bitmap、byte[]、Drawable相互转化的实例: 1. **Bitmap转byte[]**:Bitmap对象可以通过`compress()`方法压缩成字节数组,通常会选择特定的格式如PNG或JPEG,并设置压缩质量。例如,`bm.compress...
当我们需要将一个Drawable对象(如从XML布局文件中加载的图像)转换为Bitmap时,可以使用以下方法: ```java public static Bitmap drawableToBitmap(Drawable drawable) { Bitmap bitmap = Bitmap.createBitmap...
本文详细介绍了Android中`Bitmap` 的基本操作方法,包括从资源中加载、转换为字节数组、字节数组转换为`Bitmap`、缩放、将`Drawable` 转换为`Bitmap`以及获取圆角图片。这些操作对于处理图像数据非常重要,是每个...
Bitmap对象可以用来显示图片,进行图像处理,以及与各种图形资源(如Drawable)之间转换。以下是对给定文件中涉及的Android Bitmap用法的详细解释: 1. **Drawable到Bitmap的转换** 当你需要对一个Drawable对象...
以下是一些关于Android Drawable和Bitmap转换的实例详解: 1. **Bitmap转Drawable** 当我们有一个Bitmap对象,需要将其设置为ImageView或者其它可显示图像的组件时,通常会将其转换为Drawable。这个过程相对简单,...
本文将从Bitmap的基本概念出发,详细介绍Bitmap在Android中的应用方式、转换技巧及优化策略等。 #### 一、Bitmap基本概念 Bitmap类在Android中用于表示图像数据,它可以用来加载、存储和显示图片。Bitmap对象本身...
本篇将详细讲解Android中如何进行图片类型之间的转换,包括Drawable到Bitmap、从资源中获取Bitmap、Bitmap到byte数组以及byte数组到Bitmap的转换。 1. Drawable到Bitmap转换: 在Android中,Drawable是表示图像的...
图片处理是其中的重要部分,涉及`Drawable`和`Bitmap`的相互转换以及数据的序列化。理解并熟练掌握这些基本操作,对于优化应用程序的性能和用户体验至关重要。同时,资源的有效管理和使用,以及对高级UI特效的实现,...
bitmap转byte[] 获取缩略图 保存图片 光晕效果 获取bitmap的字节大小 将彩色图转换为黑白图 转换成圆角 高斯模糊 圆形图片 从Assets中读取图片 按比例缩小图片(单位像素) 判断图片旋转情况 旋转图片 图片旋转 根据...
本文将详细介绍如何在Android环境中,利用Zxing库实现多二维码识别,以及如何将资源库中的图片转化为Bitmap来辅助这一过程。 首先,Zxing(ZXing,读作“zebra crossing”)是一个开源的、跨平台的条码解码库,支持...
如果需要将Drawable转换为Bitmap,可以使用BitmapFactory的decodeResource方法。 示例代码: ```java Bitmap icon = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_resource); ``` ...
### Android中Bitmap数据存储与读取过程详解 #### 一、引言 在Android开发过程中,经常需要处理图片数据,而`Bitmap`类是用于在内存中存储位图的重要类。有时为了应用的需求,我们需要将这些`Bitmap`数据持久化到...
在Android开发中,有时我们需要将Bitmap对象保存到设备的外部存储(通常称为SD卡),以便于用户能够访问或共享图片。下面将详细讲解如何实现这一功能,以及涉及到的相关知识点。 首先,我们需要创建一个Bitmap对象...
因此,我们需要先将Bitmap转换为byte数组,然后通过Intent的putExtra()方法传递这个字节数组。接收端再将接收到的字节数组还原为Bitmap。 以下是具体实现步骤: 1. **Bitmap转byte数组**: 在发送端,我们创建一...
Android中Bitmap、byte[]、Drawable之间的转化是常见的操作。例如,Bitmap可以转化为byte数组以存储或传输,或者从byte数组恢复;Drawable可以通过某些方法转化为Bitmap,反之亦然。这种转化能力在处理图片加载、...