【发布时间】:2018-03-30 00:10:38
【问题描述】:
将 32 位图像加载到缓冲区中,然后我将颜色值与相应的 alpha 进行预乘以用于混合。
以下工作,但我想知道是否有更有效的方法来做到这一点,即使它只会产生足够好的近似值?
图像数据是这种类型的指针:
typedef struct rgba_pixel
{
uint8_t r;
uint8_t g;
uint8_t b;
uint8_t a;
} rgba_pixel;
rgba_pixel * image_data;
for ( i = 0; i < length; i++ )
{
if ( image_data[i].a == 0 )
image_data[i].r = image_data[i].g = image_data[i].b = 0;
else if ( image_data[i].a < 255 )
{
alpha_factor = image_data[i].a / 255.0;
image_data[i].r = image_data[i].r * alpha_factor;
image_data[i].g = image_data[i].g * alpha_factor;
image_data[i].b = image_data[i].b * alpha_factor;
}
}
【问题讨论】:
-
能否给出image_data和alpha_factor类型的定义?
-
添加到定义中,alpha_factor 是双精度值。
标签: c image-processing optimization graphics cairo