我有一个NSURL
作为输入形式的图像。我将此 url 转换为NSImage
我NSData
可以从中获取CGImageRef
的 . 这个 imageRef 帮助我从图像中提取原始数据信息,例如高度、宽度、bytesPerRow 等。
这是我使用的代码:
NSString * urlName = [url path];
NSImage *image = [[NSImage alloc] initWithContentsOfFile:urlName];
NSData *imageData = [image TIFFRepresentation];
CGImageSourceRef source = CGImageSourceCreateWithData((CFDataRef)CFBridgingRetain(imageData), NULL);
CGImageRef imageRef = CGImageSourceCreateImageAtIndex(source, 0, NULL);
NSUInteger numberOfBitsPerPixel = CGImageGetBitsPerPixel(imageRef);
NSUInteger height = CGImageGetHeight(imageRef);
...
...
现在,我使用以下方法检查了图像的大小:
int sz = [imageData length];
这与 -int sz' = bytesPerRow * height
我不明白为什么会有这样的差异。而sz
实际上是一半sz'
。
我在提取各种信息时犯了一些错误吗?据我所知,也许在将图像转换为NSData
一些解压缩的同时完成了。在这种情况下,我应该使用什么才能获得可靠的数据。
我是世界图像处理领域的新手Objective-C
,所以请多多包涵!
PS我实际上检查了我作为输入获得的文件的大小,其形式NSURL
与sz
.