我想拍摄CGImage,迭代像素并更改其alpha值。
我见过更改像素RGB值的代码,比如这个帖子Is programmatically inverting the colors of an image possible? 它显示了如何反转像素的RGB值。
但我想改变alpha值。
有没有办法做到这一点?
答案 0 :(得分:1)
您可以使用color picker中的代码获取图像的RGBA矩阵并更改alpha。并保存到图像。
https://github.com/sakrist/VBColorPicker/blob/master/VBColorPicker/VBColorPicker.m
unsigned char* data = CGBitmapContextGetData (cgctx);
if (data != NULL && data != 0) {
//offset locates the pixel in the data from x,y.
//4 for 4 bytes of data per pixel, w is width of one row of data.
int offset = 4*((w*round(point.y))+round(point.x));
int alpha = data[offset];
int red = data[offset+1];
int green = data[offset+2];
int blue = data[offset+3];
NSLog(@"offset: %i colors: RGB A %i %i %i %i",offset,red,green,blue,alpha);
color = [UIColor colorWithRed:(red/255.0f) green:(green/255.0f) blue:(blue/255.0f) alpha:(alpha/255.0f)];
}
答案 1 :(得分:0)
图片可能有也可能没有app可访问的像素或已知大小的像素。但是,您可以将图像渲染到您创建的位图。如果它是RGBA(或ABGR)位图,那么您可以像更改RGB值一样更改任何像素的alpha。您的应用可以使用此修改后的位图创建新图像。