我正在尝试将RGB图像转换为ARGB图像,基本上只需为Alpha通道添加255。我想知道是否有任何包方法没有迭代这样做?因此迭代我的RGB数据并将255附加到每个像素。
答案 0 :(得分:3)
C没有“方法”......不,这听起来不像标准库中的例程。我想你需要自己编写代码,使用类似的东西:
void setAlpha(unsigned char *rgba, int width, int height, int alpha)
{
int x, y;
for(y = 0; y < height; y++)
{
for(x = 0; x < width; x++, rgba += 4)
{
rgba[3] = (unsigned char) alpha;
}
}
}
基本假设:
还要注意循环的顺序;由于缓存,这可以对现实世界的性能产生巨大影响。此代码按顺序触及内存中接近的像素,这称为“良好的局部性”。
将指针更改为指向下一个像素而不是声明地址(rgba[4 * y * width + 4 * x + 3]
)也是一种优化,(对我而言)很容易理解。