首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BitmapFactory.decodeResource()忽略jpg图像的inPreferredConfig选项

BitmapFactory.decodeResource()忽略jpg图像的inPreferredConfig选项
EN

Stack Overflow用户
提问于 2012-05-02 12:21:23
回答 2查看 3.5K关注 0票数 4

我尝试将jpeg资源映像加载到ARGB_8888格式的位图中:

代码语言:javascript
复制
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap b = BitmapFactory.decodeResource(resources, resId, opts);
Log.d("test", b.getConfig().toString());

这里,resId是jpeg图像资源的id。输出为"RGB_565“。在Android2.2和2.3的模拟器中尝试了这一点。

“inPreferredConfig”的文档说:

如果这是非空,解码器将尝试解码到这个内部配置.如果它为null,或者无法满足请求,解码器将尝试根据系统的屏幕深度和原始图像的特征(例如,它是否具有每像素alpha (需要配置也需要配置)来选择最佳匹配配置。默认情况下,图像是用ARGB_8888配置加载的。

那么,我是否遇到了“请求无法满足”的情况?:)但我实在看不出如何很难将RGB_565解码为ARGB_8888。

所以我想也许我做错了,或者这是Android的一个bug .

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-13 09:42:07

加载jpeg时,必须将alpha通道设置为true:

代码语言:javascript
复制
bitmap.setHasAlpha(true);
票数 1
EN

Stack Overflow用户

发布于 2012-05-02 15:11:09

在查看了源代码之后,我只能知道遵循定义的inPreferredConfig的决定是在本机代码中完成的。参考文献:来源

我认为,因为jpg不能有alpha通道,所以它正在解码RGB_565,因为它是非alpha图像最有效的配置。如果您真的希望将其解码为ARGB_8888,则将图像转换为png。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10413628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档