首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:加载alpha遮罩位图

Android:加载alpha遮罩位图
EN

Stack Overflow用户
提问于 2010-10-29 03:12:00
回答 1查看 9.1K关注 0票数 14

我有一个单通道的PNG文件,我想用它作为Porter-Duff绘图操作的alpha掩码。如果我在没有任何选项的情况下加载它,得到的位图有一个RGB_565配置,即被视为灰度。如果我将首选配置设置为ALPHA_8,它会将其加载为灰度ARGB_8888。

如何说服Android将此文件视为alpha掩码而不是灰度图像?

代码语言:javascript
复制
mask1 = BitmapFactory.decodeStream(pngStream);
// mask1.getConfig() is now RGB_565

BitmapFactory.Options maskOpts = new BitmapFactory.Options();
maskOpts.inPreferredConfig = Bitmap.Config.ALPHA_8;
mask2 = BitmapFactory.decodeStream(pngStream, null, maskOpts);
// mask2.getConfig() is now ARGB_8888 (the alpha channel is fully opaque)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-29 23:11:40

更多的是一种变通方法而不是解决方案:

我现在将alpha通道包含在一个RGBA PNG文件中,其中的RGB通道全为零。我可以使用ARGB_8888的首选配置加载此文件,然后提取其alpha通道。这会浪费掩码文件中的几个KB,并在解码图像时浪费大量内存。

代码语言:javascript
复制
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap source = BitmapFactory.decodeStream(pngStream, null, opts);
Bitmap mask = source.extractAlpha();
source.recycle();
// mask.getConfig() is now ALPHA_8
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4046377

复制
相关文章

相似问题

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