本文选自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. 【转】安装ambari的时候遇到的ambari和hadoop问题集

    5.在安装的时候遇到的问题 5.1使用ambari-server start的时候出现ERROR: Exiting with exit code -1. 5.1.1REASON: Ambari Ser ...

  2. PHP 高并发秒杀解决方案

    本文提供 PHP 高并发秒杀解决方案(附加三个案例说明(普通流程,使用文件锁,使用redis消息队列)) 1:(正常流程,不做任何高并发处理),代码如下: <?php $_mysqli = ne ...

  3. JSP页面导致tomcat内存溢出一例

    今天发现一个奇怪的问题,一个tomcat应用,里面只有一个单纯的jsp页面,而且这个jsp页面没有任何java代码——想用这个jsp页面配合tomcat完成一个性能验证.但是用jmeter压测了几分钟 ...

  4. 6 Prefer and Would rather

    1 prefer 使用 "prefer" 用来表明通常喜欢某件事甚于另一件事.说话者喜欢打高尔夫球更甚于喜欢打网球."prefer" 的后面可以接名词(&quo ...

  5. Jenkins系统上的时间不正确问题

    很简单,点击系统管理,选择执行脚本命令: 打开 [系统管理]->[脚本命令行]运行下面的命令 System.setProperty('org.apache.commons.jelly.tags. ...

  6. day 7-5 生产者消费者模型

    一. 生产者和消费者模型 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题.该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度. 二. 为什么要使用生产者和消费者模式 ...

  7. JavaList addAll removeAll

    List<String>list1=new ArrayList<>(); list1.add("a"); list1.add("b"); ...

  8. UTF-8编码与GBK编码下的字符长度

    源码: package lsh.java.charset; import java.nio.charset.Charset; public class LengthOfUTF_8 { public s ...

  9. mysql逻辑架构

    逻辑架构图 MySQL有点与众不同,它的逻辑架构可以在多种不同的场景中应用并发挥良好的作用.主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其他的系统任务以及数据的存储提取相分离.这种架构 ...

  10. JSP从入门到精通

    1. jsp开发环境配置 在windows下配置jsp的开发环境: 假设已经安装好了jdk,下面来配置tomcat 去http://tomcat.apache.org 下载tomcat windows ...