我对Objective C很新,并且使用Cocoa Framework。我想读取一个图像,然后提取图像数据(只是像素数据,而不是标题),然后将数据写入二进制文件。我有点坚持这个,我正在经历NSImage
的方法,但我找不到合适的方法。任何人都可以建议我这样做的其他方法吗?
答案 0 :(得分:0)
可可,最简单的方法是使用NSBitmapImageRep
类。例如,使用NSData
对象初始化后,您可以使用NSColor
和-setColor:atX:y:
方法将任意坐标处的颜色值作为-colorAtX:y:
对象进行访问。请注意,如果您在紧密循环中调用这些方法,则可能会受到objc_msg_send
的性能影响。您可以考虑通过-bitmapData
方法将原始位图数据作为C数组访问。例如,在处理RGB图像时,每个通道的颜色值以3的偏移量存储。
例如:
color values: [R,G,B][R,G,B][R,G,B]
indices: [0,1,2, 3,4,5, 6,7,8]
循环遍历图像中的每个像素并提取RGB分量:
unsigned char *bitmapData = [bitmapRep bitmapData];
if ([bitmapRep samplesPerPixel] == 3) {
for (i = 0; i < [image size].width * [image size].height; i++) {
int base = (i * 3);
// these range from 0-255
unsigned char red = bitmapData[base + 0];
unsigned char green = bitmapData[base + 1];
unsigned char blue = bitmapData[base + 2];
}
}