我有一个单通道的PNG文件,我想用它作为Porter-Duff绘图操作的alpha掩码。如果我在没有任何选项的情况下加载它,得到的位图有一个RGB_565配置,即被视为灰度。如果我将首选配置设置为ALPHA_8,它会将其加载为灰度ARGB_8888。
如何说服Android将此文件视为alpha掩码而不是灰度图像?
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)发布于 2010-10-29 23:11:40
更多的是一种变通方法而不是解决方案:
我现在将alpha通道包含在一个RGBA PNG文件中,其中的RGB通道全为零。我可以使用ARGB_8888的首选配置加载此文件,然后提取其alpha通道。这会浪费掩码文件中的几个KB,并在解码图像时浪费大量内存。
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_8https://stackoverflow.com/questions/4046377
复制相似问题