如何在CGImage中编辑像素的alpha

时间:2011-12-11 12:01:20

标签: iphone ios ipad ios5

我想拍摄CGImage,迭代像素并更改其alpha值。

我见过更改像素RGB值的代码,比如这个帖子Is programmatically inverting the colors of an image possible? 它显示了如何反转像素的RGB值。

但我想改变alpha值。

有没有办法做到这一点?

2 个答案:

答案 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。您的应用可以使用此修改后的位图创建新图像。