GetPixelAddress()函数Alpha通道会丢失
程序员文章站
2023-03-31 23:08:00
CImage类中GetPixelAddress()函数来设置获取对应的颜色值是发现Alpha无效。 不管 newBuffer[3] = a; 如何设置 newImage始终无法透明。 这里要注意的是 newImage.Create(width,height,32); 这里第三个函数一定要设置为32 ......
cimage类中getpixeladdress()函数来设置获取对应的颜色值是发现alpha无效。
void cgbimage::load(){
cimage sourceimage;
sourceimage.load(l"c:\\users\\ju'k\\desktop\\cgaussblur\\1.png");
int bpp = sourceimage.getbpp();
int width = sourceimage.getwidth();
int height = sourceimage.getheight();
cimage newimage;
newimage.create(width,height,32);
for(int w = 0; w < width;w++){
for(int h = 0; h < height;h++){
if(w == 20 && h == 20){
int xx = 0;
}
byte* buffer = (byte*)sourceimage.getpixeladdress(w,h);
byte b = buffer[0];
byte g = buffer[1];
byte r = buffer[2];
byte a = buffer[3];
byte* newbuffer = (byte*)newimage.getpixeladdress(w,h);
newbuffer[0] = b;
newbuffer[1] = g;
newbuffer[2] = r;
newbuffer[3] = a;
}
}
clsid pngclsid;
getencoderclsid(_t("image/png"), &pngclsid);
newimage.save(l"c:\\users\\ju'k\\desktop\\cgaussblur\\1_1.png");
}
不管 newbuffer[3] = a; 如何设置 newimage始终无法透明。
这里要注意的是
newimage.create(width,height,32);
这里第三个函数一定要设置为32
第四个函数这里是默认的为0,应该设置为cimage::createalphachannel。
下一篇: 我一岁多那会