使用Cocoa从JPEG图像获取位图数据

时间:2011-12-20 13:11:07

标签: cocoa image

我需要从JPEG或PNG文件中提取原始RGB位图数据,包含文件中的所有位,而不是窗口或颜色转换版本。

我是Cocoa的新手,但看起来我像这样使用NSImage打开图像:

NSString* imageName=[[NSBundle mainBundle] pathForResource:@"/Users/me/Temp/oxberry.jpg" ofType:@"JPG"];
NSImage*  tempImage=[[NSImage alloc] initWithContentsOfFile:imageName];
NSBitmapImageRep* imageRep=[[[NSBitmapImageRep alloc] initWithData:[tempImage TIFFRepresentation]] autorelease];
unsigned char* bytes=[imageRep bitmapData];
int bits=[imageRep bitsPerPixel];

然后获取位图数据似乎有很多选项:Bitmapimage,CGImage等。

什么是最简单的方法,如果有代码片段,那就太棒了。

谢谢!

1 个答案:

答案 0 :(得分:3)

你走在正确的轨道上。正如您所注意到的,有很多方法可以做到这一点。

一旦有了NSImage,就可以创建一个位图表示,并直接访问它的字节。获取NSBitmapImageRep的简单方法是:

NSBitmapImageRep* imageRep = [[[NSBitmapImageRep alloc] initWithData:[tempImage TIFFRepresentation]] autorelease];

unsigned char* bytes = [imageRep bitmapData];
int bitsPerPixel  = [imageRep bitsPerPixel];
// etc

通过TIFFRepresentation步骤比直接访问NSImage的表示更安全。