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 reference
,bitmap
可能无法正确渲染,即使在正确缩放时也是如此。这里有很多问题,只需使用此方法即可解决,而不是仅使用 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后透明背景图变黑???的主要内容,如果未能解决你的问题,请参考以下文章