以下功能返回哪种类型的数据?
CFDataRef CreateDatafromImage(UIImage *image)
{
return CGDataProvidercopyData(CGImageGetDataProvider(image.CGImage));
}
答案 0 :(得分:4)
我猜最接近的答案是2)原始像素数据。虽然,说实话,我并没有真正看到Binary image data
和Raw pixel data
之间的区别。至于第三个选择,Compressed image data
,我想我可以想象这是如何指出返回的NS
/ CFData
对象是否表示压缩的JPEG数据(例如,100 KB)为它存在于文件中,或者它是否以未压缩的形式表示数据(例如,24位RGB,可能是280 KB)。在这种情况下,我猜你可以说它代表了“未压缩”形式的数据。
但是,你究竟是如何定义“压缩”的呢?例如,假设您有一个已保存的图像并具有以下布局:每像素16位RGB kCGImageAlphaNoneSkipFirst
,如此图像中的最后一个示例所示:
与图中的其他布局相比,您可以将此布局视为在某种意义上被“压缩”。 (见Color Spaces and Bitmap Layout)。
因此,总而言之,当您获得CGImageRef
时,图像处于Quartz理解的“本机表示”中。从该方法返回的数据是原始像素数据; 数据不是“JPEG格式”,“PNG格式”或“TIFF格式”等。您可以使用查询功能收集信息关于图像通道,Alpha通道和位深度的组合:CGImageGetBitmapInfo()
,CGImageGetBitsPerComponent()
,CGImageGetBitsPerPixel()
等。
处理JPEG,PNG,TIFF等图像格式被抽象为其他API和类型,例如CGImageSourceRef
,CGDataProviderRef
,CGImageDestinationRef
和CGDataConsumerRef
。请参阅Moving Data Into Quartz 2D和Moving Data Out Of Quartz 2D。
答案 1 :(得分:2)
呃......一个CFDataRef
对象?
这是一个可以互换使用NSData
或CFData
的对象。
在内部,CFData
调用的返回值创建CGDataProvidercopyData
(使用CGImageGetDataProvider
)。
答案 2 :(得分:1)
它包含在文档中(这是Google首次点击之一)。
这篇特别的技术说明详细介绍了它。
http://developer.apple.com/library/mac/#qa/qa2007/qa1509.html