如何将Drawable转为Bitmap?

本文选自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。

转载于:https://www.cnblogs.com/aikongmeng/p/3697335.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值