drawable转换为bitmap后透明背景图变黑???

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了drawable转换为bitmap后透明背景图变黑???相关的知识,希望对你有一定的参考价值。

drawable转换为bitmap后保存到sdcard,但透明背景图变黑了[mw_shl_code=java,true]public Bitmap drawabletoBitmap(Drawable drawable) int width = drawable.getIntrinsicWidth(); int height = drawable.getIntrinsicWidth(); Bitmap bitmap = Bitmap.createBitmap(width, height, drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, width, height); drawable.draw(canvas); return bitmap;[/mw_shl_code]

参考技术A drawabletoBitmap得到的bitmap显示出来背景还是透明的,你看看一些保存时候是不是设置成jpg了,png保存的是透明的。 查看原帖>>本回答被提问者采纳

如何在 android 中将 Bitmap 转换为 Drawable?

【中文标题】如何在 android 中将 Bitmap 转换为 Drawable?【英文标题】:How to convert a Bitmap to Drawable in android? 【发布时间】:2011-01-25 19:34:25 【问题描述】:

如何将位图图像转换为 Drawable ?

【问题讨论】:

您好,我得到了您的问题的答案,请点击此链接并得到正确答案,我这样做了。我成功了,我希望你能成功。祝你好运androidsnippets.com/convert-bitmap-to-drawable 贡献是表达感谢的好方法... :) 在给出答案方面的贡献... :) @Farhan k ...... . 【参考方案1】:

试试这个它将Bitmap类型的图像转换为Drawable

Drawable d = new BitmapDrawable(getResources(), bitmap);

【讨论】:

这是我所期望的!【参考方案2】:

听起来你想使用BitmapDrawable

来自文档:

一个Drawable 包装位图并且可以 平铺、拉伸或对齐。你 可以从一个BitmapDrawable 文件路径,输入流,通过 XML 膨胀,或来自Bitmap 对象。

【讨论】:

@Deprecated 使用 BitmapDrawable(Resources, Bitmap) 确保可绘制对象已正确设置其目标密度。 无用的帖子,无用的评论。如果你添加一些代码会更好【参考方案3】:

看到大量位图在转换为BitmapDrawable 时缩放不正确的问题,一般的转换方法应该是:

Drawable d = new BitmapDrawable(getResources(), bitmap);

没有Resources referencebitmap 可能无法正确渲染,即使在正确缩放时也是如此。这里有很多问题,只需使用此方法即可解决,而不是仅使用 bitmap 参数直接调用。

【讨论】:

如果你要投反对票,至少要评论为什么。这是一个完全有效的答案,并带来了额外的信息来解决提供的其他答案可能出现的问题。在没有 getResources() 引用的情况下,直接从位图制作的 Drawable 通常会出现缩放错误。 考虑到@Manoj 的答案已弃用,这是一个更准确的答案。【参考方案4】:

官方Bitmapdrawabledocumentation

这是关于如何转换bitmap to drawable的示例

Bitmap bitmap;  
//Convert bitmap to drawable
Drawable drawable = new BitmapDrawable(getResources(), bitmap);
imageView.setImageDrawable(drawable);

【讨论】:

对不起...我不是认真的 你本可以投票而不是写相同的答案。【参考方案5】:

我在上下文中使用

//Convert bitmap to drawable
Drawable drawable = new BitmapDrawable(context.getResources(), bitmap);

【讨论】:

重复答案。【参考方案6】:

如果你有一个位图图像并且你想在drawable中使用它,比如

Bitmap contact_pic;    //a picture to show in drawable
drawable = new BitmapDrawable(contact_pic); 

【讨论】:

现在已弃用。现在使用 BitmapDrawable(Resources, Bitmap) 构造函数。 @schlingel 它仍然可以正常工作,我们中的许多人都在我们的项目中使用它, 这对你有好处,但当谷歌最终杀死这个构造函数并且你必须重写所有内容时,这无济于事。 @schlingel 是的,但是仍然有人急于使用它并且它可以工作【参考方案7】:

1) 位图到 Drawable :

Drawable mDrawable = new BitmapDrawable(getResources(), bitmap);
// mImageView.setDrawable(mDrawable);

2) 可绘制到位图:

Bitmap mIcon = BitmapFactory.decodeResource(context.getResources(),R.drawable.icon_resource);
// mImageView.setImageBitmap(mIcon);

【讨论】:

【参考方案8】:

这样做:

private void setImg(ImageView mImageView, Bitmap bitmap) 

    Drawable mDrawable = new BitmapDrawable(getResources(), bitmap);
    mImageView.setDrawable(mDrawable);

【讨论】:

不是他所要求的解决方案【参考方案9】:

还有一个:

Drawable drawable = RoundedBitmapDrawableFactory.create(context.getResources(), bitmap);

【讨论】:

【参考方案10】:

使用代码在草图软件应用程序中将位图转换为可绘制

    android.graphics.drawable.BitmapDrawable d = new android.graphics.drawable.BitmapDrawable(getResources(), bitmap);

【讨论】:

【参考方案11】:

对于 Kotlin 用户:

Kotlin 具有将Bitmap 转换为BitmapDrawable 的功能:

Bitmap.toDrawable(resources)

【讨论】:

【参考方案12】:

你可以试试这个:

public static Bitmap mirrorBitmap(Bitmap bInput)
    
        Bitmap  bOutput;
        Matrix matrix = new Matrix();
        matrix.preScale(-1.0f, 1.0f);
        bOutput = Bitmap.createBitmap(bInput, 0, 0, bInput.getWidth(), bInput.getHeight(), matrix, true);
        return bOutput;
    

【讨论】:

以上是关于drawable转换为bitmap后透明背景图变黑???的主要内容,如果未能解决你的问题,请参考以下文章

转换后iOS状态栏背景变黑

透明背景在 WPF 中变黑

怎么拿到 drawable 的 宽高

如何在 android 中将 Bitmap 转换为 Drawable?

android 如何创建一张透明bitmap

Android Bitmap 与 Drawable之间的区别和转换