【问题标题】:Android: how apply transparency mask to a Bitmap?Android:如何将透明度蒙版应用于位图?
【发布时间】:2011-08-23 13:38:40
【问题描述】:

我有一个 ARGB_8888 位图,我需要在绘制到画布之前应用一个 alpha 蒙版。 Alpha 掩码是表示图像的 Alpha 通道的字节流。我可以检索位图的像素值的 int 数组,遍历数组并为每个像素设置 alpha,从新像素值创建位图,并将其绘制到画布上;但这似乎效率极低。因此,我希望使用一些内置功能将蒙版应用于位图;但找不到任何有用的东西。有什么建议吗?

【问题讨论】:

    标签: android bitmap


    【解决方案1】:

    首先,确保您有一个带有Bitmap.isMutable() 的可变位图。

    您是否尝试过 Bitmap.setHasAlpha 并在可变 Bitmap 上使用算术运算来简单地“添加” alpha 通道?

    也就是说,如果您有一个像素为#00FF0000,您可以添加#FF000000 使其完全透明。

    这将比复制到新的Bitmap 更有效。

    可能是这样的

    int desiredAlpha = 0x0F000000;
    for(int i = 0; i < Bitmap.getwidth; i++)
    {
        for(int j = 0; j < Bitmap.getHeight; j++)
        {
             Bitmap.setPixel(Bitmap.getPixel(i,j) + desiredAlpha);
        }
    }
    

    希望这会有所帮助!

    【讨论】:

    • 你想要一个循环中的 .getHeight() ;)
    • 傻我! :D 感谢您的敏锐眼光!
    • 谢谢;但这仍然比我想要的慢得多。我真的希望有某种混合模式或 AlphaMaskFilter 或类似的东西
    • 如果您正在寻找更复杂/更快的东西,我建议您放弃画布并使用 OpenGL 操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 2020-04-12
    • 2011-06-02
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    相关资源
    最近更新 更多