4
在UIKit中有沒有很好的模擬NSBitmapImageRep
?具體而言,我正在尋找類似的方法setPixel:atX:y:
和getPixel:atX:y:
。我發現了this technote,它確實讓我在使用CGImage的大部分方式中,但是我怎麼知道像素的順序?NSBitmapImageRep for iPhone(或直接像素訪問CGImage)?
在UIKit中有沒有很好的模擬NSBitmapImageRep
?具體而言,我正在尋找類似的方法setPixel:atX:y:
和getPixel:atX:y:
。我發現了this technote,它確實讓我在使用CGImage的大部分方式中,但是我怎麼知道像素的順序?NSBitmapImageRep for iPhone(或直接像素訪問CGImage)?
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));
是否有非RGB佈局的可能性?這是我擔心的主要問題,假設我發現每個圖像都是RGB。 – 2010-06-29 15:53:15
是的,如果您不知道色彩空間,請使用CGColorSpaceGetModel。 – drawnonward 2010-07-03 17:23:44