适用于iPhone的NSBitmapImageRep(或CGImage的直接像素访问)?

时间:2010-06-29 15:27:13

标签: iphone objective-c

UIKit中有NSBitmapImageRep的模拟效果吗?具体来说,我正在寻找与setPixel:atX:y:getPixel:atX:y:类似的方法。我找到了this技术说明,它确实让我在那里使用了CGImage,但我怎么知道像素的顺序呢?

1 个答案:

答案 0 :(得分:3)

CGImageGetBitsPerComponent( image );
CGImageGetBitsPerPixel( image );
CGImageGetBytesPerRow( image );
CGImageGetBitmapInfo( image );
CGColorSpaceGetModel( CGImageGetColorSpace( image ) );
CGColorSpaceGetNumberOfComponents( CGImageGetColorSpace( image ) );

使用上述调用,您可以弄清楚每个像素的布局方式。 x,y的每个像素将从以下位置开始:

length = CGImageGetBitsPerPixel(image)/CHAR_BIT;
offset = y*CGImageGetBytesPerRow(image) + x*length;

典型的32位ARGB PNG可能是:

8 = CGImageGetBitsPerComponent( image );
32 = CGImageGetBitsPerPixel( image );
kCGImageAlphaFirst = CGImageGetBitmapInfo( image );
4 = CGColorSpaceGetNumberOfComponents( CGImageGetColorSpace( image ) );
kCGColorSpaceModelRGB = CGColorSpaceGetNumberOfComponents( CGImageGetColorSpace( image ) );