首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修改α乘前图像的不透明度?

如何修改α乘前图像的不透明度?
EN

Stack Overflow用户
提问于 2015-08-21 15:29:48
回答 1查看 271关注 0票数 1

我有一个α预乘图像,需要改变它的不透明度。应用于图像的不透明度可以从0.0更改到1.0。

使用以下公式很容易实现这一过程:

代码语言:javascript
复制
Cn = C*alpha;
An = A*alpha;

然而,我试图避免自己编写这段代码,并允许高度优化的库像素来完成这项工作。他们提供各种混合选项,但我不太确定如何使用掩膜或使用哪个混合选项。我试过用乘法,但这使图像像预期的更暗,我想.

有什么我应该使用的潜在的混合选项吗?

代码语言:javascript
复制
{ "CLEAR",      PIXMAN_OP_CLEAR },
    { "SRC",        PIXMAN_OP_SRC },
    { "DST",        PIXMAN_OP_DST },
    { "OVER",       PIXMAN_OP_OVER },
    { "OVER_REVERSE",   PIXMAN_OP_OVER_REVERSE },
    { "IN",     PIXMAN_OP_IN },
    { "IN_REVERSE", PIXMAN_OP_IN_REVERSE },
    { "OUT",        PIXMAN_OP_OUT },
    { "OUT_REVERSE",    PIXMAN_OP_OUT_REVERSE },
    { "ATOP",       PIXMAN_OP_ATOP },
    { "ATOP_REVERSE",   PIXMAN_OP_ATOP_REVERSE },
    { "XOR",        PIXMAN_OP_XOR },
    { "ADD",        PIXMAN_OP_ADD },
    { "SATURATE",   PIXMAN_OP_SATURATE },

    { "MULTIPLY",   PIXMAN_OP_MULTIPLY },
    { "SCREEN",     PIXMAN_OP_SCREEN },
    { "OVERLAY",    PIXMAN_OP_OVERLAY },
    { "DARKEN",     PIXMAN_OP_DARKEN },
    { "LIGHTEN",    PIXMAN_OP_LIGHTEN },
    { "COLOR_DODGE",    PIXMAN_OP_COLOR_DODGE },
    { "COLOR_BURN", PIXMAN_OP_COLOR_BURN },
    { "HARD_LIGHT", PIXMAN_OP_HARD_LIGHT },
    { "SOFT_LIGHT", PIXMAN_OP_SOFT_LIGHT },
    { "DIFFERENCE", PIXMAN_OP_DIFFERENCE },
    { "EXCLUSION",  PIXMAN_OP_EXCLUSION },
    { "HSL_HUE",    PIXMAN_OP_HSL_HUE },
    { "HSL_SATURATION", PIXMAN_OP_HSL_SATURATION },
    { "HSL_COLOR",  PIXMAN_OP_HSL_COLOR },
    { "HSL_LUMINOSITY", PIXMAN_OP_HSL_LUMINOSITY },

这是实际的复合函数:

代码语言:javascript
复制
void pixman_image_composite(pixman_op_t        op,
                           pixman_image_t    *src,
                           pixman_image_t    *mask,
                           pixman_image_t    *dest,
                           int16_t            src_x,
                           int16_t            src_y,
                           int16_t            mask_x,
                           int16_t            mask_y,
                           int16_t            dest_x,
                           int16_t            dest_y,
                           uint16_t           width,
                           uint16_t           height);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-24 00:39:35

解决办法其实很简单。刚开始的时候,我并没有太在意面具。然后我意识到,啊,当然是个面具,就像photoshop用的一样。

因此,应用具有正确alpha值的掩码将导致图像更改其不透明度。

因此,将图像不透明度改变为50%,我们将使用白色和阿尔法值为50%的掩膜。

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

https://stackoverflow.com/questions/32144176

复制
相关文章

相似问题

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