本文选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术。本文将讲解如何将Drawable转为Bitmap?

问:Rob

我想要设置某个Drawable作为墙纸,但是所有的墙纸功能只支持Bitmap。因为我是pre 2.1系统,所以不能使用WallpaperManager。

而且,我从网上下载的图片在R.drawable中也不能使用,出现这种情况该怎么处理?

答:varun

(最佳答案)

这种方法可以将BitmapDrawable转换成Bitmap

1
2
Drawable
d = ImagesArrayList.get(0); 
Bitmap
bitmap = ((BitmapDrawable)d).getBitmap();

答:Praveen

通常情况下,我觉得下面代码比较有用:

1
2
Bitmap
icon = BitmapFactory.decodeResource(context.getResources(),
                                           R.drawable.icon_resource);

注:下面介绍一种可以下载图片的版本:

1
2
3
4
5
6
7
8
String
name = c.getString(str_url);
URL
url_value =
new

URL(name);
ImageView
profile = (ImageView)v.findViewById(R.id.vdo_icon);
if

(profile !=
null)
{
    Bitmap
mIcon1 =
        BitmapFactory.decodeStream(url_value.openConnection().getInputStream());
    profile.setImageBitmap(mIcon1);
}

答:André

1
2
3
4
5
6
7
8
9
10
11
12
public
static Bitmap drawableToBitmap (Drawable drawable) {
    if

(drawable
instanceof

BitmapDrawable) {
        return

((BitmapDrawable)drawable).getBitmap();
    }
 
    Bitmap
bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Config.ARGB_8888);
    Canvas
canvas =
new

Canvas(bitmap);
    drawable.setBounds(0,
0, canvas.getWidth(), canvas.getHeight());
    drawable.draw(canvas);
 
    return

bitmap;
}

答:kabuko

Drawable可以放在Canvas上,而Bitmap支持Canvas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public
static Bitmap drawableToBitmap (Drawable drawable) {
    if

(drawable
instanceof

BitmapDrawable) {
        return

((BitmapDrawable)drawable).getBitmap();
    }
 
    int
width = drawable.getIntrinsicWidth();
    width
= width > 0 ? width : 1;
    int
height = drawable.getIntrinsicHeight();
    height
= height > 0 ? height : 1;
 
    Bitmap
bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
    Canvas
canvas =
new

Canvas(bitmap);
    drawable.setBounds(0,
0, canvas.getWidth(), canvas.getHeight());
    drawable.draw(canvas);
 
    return

bitmap;
}

原文链接:http://stackoverflow.com/questions/3035692/how-to-convert-a-drawable-to-a-bitmap

文章选自StackOverFlow社区,鉴于其内容对于开发者有所帮助,现将文章翻译于此,供大家参考及学习。9Tech将每日持续更新,读者可点击StackOverflow(简称:SOF)精选问答汇总,查看全部译文内容。同时,我们也招募志同道合的技术朋友共同翻译,造福大家!报名请发邮件至zhangqi_wj@cyou-inc.com。

如何将Drawable转为Bitmap?的更多相关文章

  1. Android Drawable、Bitmap、byte[]之间的转换

    转自http://blog.csdn.net/june5253/article/details/7826597 1.Bitmap-->Drawable Bitmap drawable2Bitma ...

  2. Drawable和Bitmap区别

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

  3. 获取应用图标,Drawable 转bitmap

    获取应用图标: PackageManager p = context.getPackageManager(); Drawable draw=null; ApplicationInfo info; tr ...

  4. 简单谈谈Resource,Drawable和Bitmap之间的转换

    一直接触这些东西,还是归个类整理一下比较好. Resource -> Drawable Drawable draw1 = this.getResources().getDrawable(R.dr ...

  5. android 获取资源文件 r.drawable中的图片转换为drawable、bitmap

    1.R-Drawable Resources resources = mContext.getResources(); Drawable drawable = resources.getDrawabl ...

  6. Android -- Drawable与Bitmap测试

    Drawable                                                                                 以下这个是测试加载10 ...

  7. Drawable和Bitmap转换

    一.Bitmap转Drawable Bitmap mBitMap=getYourBitMap(); //getYourBitMap()是你获取BitMap的方法 BitmapDrawable mBit ...

  8. Drawable、Bitmap、byte[]之间的转换

    android在处理一写图片资源的时候,会进行一些类型的转换: 1 Drawable → Bitmap 的简单方法 ((BitmapDrawable)res.getDrawable(R.drawabl ...

  9. Drawable与Bitmap(转)

    Drawable                                                                                 以下这个是测试加载10 ...

随机推荐

  1. Django的contenttypes

    这是一个django内置的表结构,为的就是通过两个字段让表和N张表创建FK关系. 比如说有两种不同课程,这两种课程都有价格周期和策略.如果最低级的则是给每个表创建一个价格策略.如果非要在同一个表内使用 ...

  2. JavaWeb连接SQLServer数据库并完成一个登录界面及其功能设计。

    一.JDBC连接SQLserver数据库的步骤: 1.下载SQLserver的JDBC驱动文件——Microsoft JDBC Driver 4.0 for SQL Server 2.例如下载得到的文 ...

  3. Java参数是值传递还是引用传递?

    先来看看参数是如何传递的. 一.参数的传递 1.基本类型的参数传递 public static void main(String[] args) { int a = 1; fun(a); } priv ...

  4. Python之缩进块

    pycharm编辑器识别冒号,当换行后下一行默认是缩进块的位置:

  5. shell脚本--php执行普通shell命令

    这里只演示一些普通的shell命令,一些需要root用户权限执行的命令,请参考:php以root权限执行shell命令 php执行shell命令,可以使用下面几个函数: string system ( ...

  6. Linux 典型应用之常用命令

    软件操作相关命令 软件包管理 (yum) 安装软件 yum install xxx(软件的名字) 如 yum install vim 卸载软件 yum remove xxx(软件的名字) 如 yum ...

  7. jvisualvm远程监控 visualgc插件 不受此jvm支持问题

    https://yq.aliyun.com/ziliao/478212 1.修改远程服务器上java设置 vi $JAVA_HOME/jre/lib/security/java.policy    在 ...

  8. Spring.profile配合Jenkins发布War包,实现开发、测试和生产环境的按需切换

    前两篇不错 Spring.profile实现开发.测试和生产环境的配置和切换 - Strugglion - 博客园https://www.cnblogs.com/strugglion/p/709102 ...

  9. 完美解决safari、微信浏览器下拉回弹效果

    CSS代码: .box{ overflow: auto; -webkit-overflow-scrolling: touch; } HTML代码: <body class="box&q ...

  10. 解决.Net Mvc跨域请求问题

    针对ASP.NET MVC和ASP.NET Web API两种项目类型 1.针对ASP.NET MVC,只需要在web.config中添加如下的内容即可 <system.webServer> ...