CGImageGetBitsPerComponent( image ); CGImageGetBitsPerPixel( image ); CGImageGetBytesPerRow( image ); CGImageGetBitmapInfo( image ); CGColorSpaceGetModel( CGImageGetColorSpace( image ) ); CGColorSpaceGetNumberOfComponents( CGImageGetColorSpace( image ) );
Using the calls above, you can figure out how each pixel is laid out. Each pixel for x, y starts with:
length = CGImageGetBitsPerPixel(image)/CHAR_BIT; offset = y*CGImageGetBytesPerRow(image) + x*length;
A typical 32-bit ARGB PNG could be:
8 = CGImageGetBitsPerComponent( image ); 32 = CGImageGetBitsPerPixel( image ); kCGImageAlphaFirst = CGImageGetBitmapInfo( image ); 4 = CGColorSpaceGetNumberOfComponents( CGImageGetColorSpace( image ) ); kCGColorSpaceModelRGB = CGColorSpaceGetNumberOfComponents( CGImageGetColorSpace( image ) );
source share