`
52xianmengyu
  • 浏览: 63600 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类

Drawable和Bitmap转换

阅读更多

一、Bitmap转Drawable


Bitmap bm=xxx; //xxx根据你的情况获取

BitmapDrawable bd=new BitmapDrawable(bm);
因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。

二、 Drawable转Bitmap

转成Bitmap对象后,可以将Drawable对象通过Android的SK库存成一个字节输出流,最终还可以保存成为jpg和png的文件。
Drawable d=xxx; //xxx根据自己的情况获取drawable

BitmapDrawable bd = (BitmapDrawable) d;

Bitmap bm = bd.getBitmap();
最终bm就是我们需要的Bitmap对象了。



// 从资源中获取Bitmap
public static Bitmap getBitmapFromResources(Activity act, int resId) {
Resources res = act.getResources();
return BitmapFactory.decodeResource(res, resId);
}

// byte[] → Bitmap
public static Bitmap convertBytes2Bimap(byte[] b) {
if (b.length == 0) {
return null;
}
return BitmapFactory.decodeByteArray(b, 0, b.length);
}

// Bitmap → byte[]
public static byte[] convertBitmap2Bytes(Bitmap bm) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
return baos.toByteArray();
}

// 1)Drawable → Bitmap
public static Bitmap convertDrawable2BitmapByCanvas(Drawable drawable) {
Bitmap bitmap = Bitmap
.createBitmap(
drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(),
drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
// canvas.setBitmap(bitmap);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight());
drawable.draw(canvas);
return bitmap;
}

// 2)Drawable → Bitmap
public static Bitmap convertDrawable2BitmapSimple(Drawable drawable){
BitmapDrawable bd = (BitmapDrawable) drawable;
return bd.getBitmap();
}

// Bitmap → Drawable
public static Drawable convertBitmap2Drawable(Bitmap bitmap) {
BitmapDrawable bd = new BitmapDrawable(bitmap);
// 因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。
return bd;
}


转自:http://blog.sina.com.cn/s/blog_4607d856010125sl.html

分享到:
评论

相关推荐

    Android Drawable Bitmap 相互转换

    将Bitmap转换为Drawable,可以创建一个BitmapDrawable对象,然后设置其Bitmap属性。以下是转换方法: ```java Drawable drawable = bitmapToDrawable(context, bitmap); public static Drawable ...

    Android Drawable和Bitmap的转换实例详解

    Android Drawable和Bitmap的转换实例详解 通常我们需要通过代码去设置图片,就需要设置图片Bitmap和Drawable的转换,下面整理了几种方式 一、Bitmap转Drawable Bitmap bm=xxx; //xxx根据你的情况获取 ...

    Android Drawable、Bitmap、byte、灰度 之间的转换

    将Bitmap转换为byte数组,通常是为了便于在网络上传输或存储到文件中。这个过程涉及压缩,可以选择不同的压缩格式和质量。 ```java private byte[] Bitmap2Bytes(Bitmap bm) { ByteArrayOutputStream baos = new ...

    Android Drawable、Bitmap、byte、灰度 转换

    在Android开发中,图片资源的处理是常见的需求之一,涉及到多种数据类型之间的转换,包括`Drawable`、`Bitmap`、`byte[]`等。本文将详细介绍这些类型之间的转换方法,以及如何实现灰度图像的转换。 ### 1. `...

    Drawable Bitmap之间的转化

    // 将Bitmap转换为Drawable并进一步处理 Drawable drawable = bitmapToDrawable(this, bitmap); ``` 3. **图像处理** 对于复杂的图像处理需求,如缩放、裁剪等操作,通常使用`Bitmap`更加方便。例如,可以将...

    android_Drawable、Bitmap、byte[]之间的转换.doc

    以上就是关于`Drawable`、`Bitmap`和`byte[]`之间转换的具体实现方法。在实际开发中,根据不同的应用场景选择合适的方法进行转换是非常重要的。此外,还需要注意内存管理和性能优化的问题,例如适当调整图像大小和...

    Drawable Bitmap InputStream byte[]相互转化工具类

    在网络传输或保存到数据库时,将Bitmap转换为byte数组可以降低存储和传输的成本。 下面是如何在这些类型之间进行转换: 1. Drawable到Bitmap: 要将Drawable转换为Bitmap,可以使用Drawable的`copyBounds()`方法...

    Android App开发中将View或Drawable转为Bitmap的方法

    在Android应用开发中,将View或Drawable...总结,将View或Drawable转换为Bitmap是Android开发中的基础操作,但需要注意缓存大小和绘制过程中的细节。正确地处理这些问题可以确保在各种场景下都能得到正确的Bitmap结果。

    Android Bitmap和Drawable相互转换的简单代码

    很多开发者表示,不知道Android的Drawable和Bitmap之间如何相关转换。下面Android123给大家两种比较简单高效的方法。  一、Bitmap转Drawable 代码如下: Bitmap bm=xxx; //xxx根据你的情况获取  BitmapDrawable bd...

    Bitmap,BitmapDrawable,Drawable.doc

    将Bitmap转换为Drawable相对简单,只需将Bitmap传递给BitmapDrawable的构造函数即可: ```java Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.your_icon); Drawable drawable = new ...

    Android Bitmap和Drawable的对比

    Android Bitmap和Drawable的对比 Android Bitmap和Drawable是Android平台中两种常见的图形对象,虽然它们都可以用来显示图像,但是它们之间有着很大的区别。本文将对Android Bitmap和Drawable进行对比,帮助开发者...

    图片比例缩放以及bitMap转BitmapDrawable

    图片比例缩放和Bitmap转换为BitmapDrawable是其中的关键步骤,尤其在优化应用性能、节省资源消耗方面起着决定性作用。这篇博文将深入探讨这两个主题。 首先,我们来谈谈图片比例缩放。在Android中,加载大尺寸的...

    Bitmap,byte[],Drawable相互转化

    4. **Drawable转Bitmap**:对于Drawable对象,可以通过创建一个新的Bitmap和Canvas,然后将Drawable的内容绘制到Canvas上,从而得到Bitmap。`drawable.draw(canvas)`这一步就是将Drawable的内容复制到Bitmap。 5. *...

    文字转换成Drawable

    5. **转换为Drawable**:绘制完成后,将Bitmap转换为Drawable对象,可以使用BitmapDrawable构造函数完成。然后,这个Drawable对象就可以像其他图片资源一样在XML布局或代码中使用。 6. **进一步扩展**:除了基本的...

    android Bitmap用法总结

    3. **Bitmap转换为byte数组**: 当需要将Bitmap保存到内存或发送到服务器时,可以将其转换为byte数组: ```java private byte[] Bitmap2Bytes(Bitmap bm) { ByteArrayOutputStream baos = new ...

    androidbitmap的用法.pdf

    `Bitmap2Bytes(Bitmap bm)`方法将Bitmap转换为byte数组。它创建一个`ByteArrayOutputStream`,然后使用`compress()`方法将Bitmap压缩成PNG格式(可选择其他格式),压缩质量设置为100(即无损压缩),最后将`...

    android-openCV中无法将Bitmap转换为Mat.pdf

    在Android开发中,OpenCV库...总之,Android OpenCV中Bitmap转换为Mat的问题主要与Bitmap的加载方式和OpenCV的兼容性有关。通过理解这两种数据结构以及它们之间的转换机制,开发者可以采取适当措施避免或解决此类问题。

Global site tag (gtag.js) - Google Analytics