IPHONE:如何提取UIIMage的RGB通道?

时间:2009-11-26 00:56:38

标签: iphone iphone-sdk-3.0

我有一个带alpha通道的UIImage。

如何提取UIImage的RGB通道,每个通道都是一个独立的带有alpha的UIImage?

提前感谢。

1 个答案:

答案 0 :(得分:3)

this

另外,看看this question - 偏执细节中的第三个答案
还有一些代码用于访问像素并将它们保存到新的UIImage中:

UIImage* image = ...; // An image
NSData* pixelData = (NSData*) CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
void* pixelBytes = [pixelData bytes];

//Leaves only the green pixel, assuming 32-bit RGBA
for(int i = 0; i < [pixelData length]; i += 4) {
        bytes[i] = 0; // red
        bytes[i+1] = bytes[i+1]; // green
        bytes[i+2] = 0; // blue
        bytes[i+3] = 0; // alpha
    }

NSData* newPixelData = [NSData dataWithBytes:pixelBytes length:[pixelData length]];
UIImage* newImage = [UIImage imageWithData:newPixelData];

改编自here。要在不同的图像中使用三个不同的通道,请在代码中设置为除了每次要保存的通道以外的所有通道,然后创建新图像。