我的问题非常简单,我想获得图像的方向,但我不想使用[UIImage imageWithData:]
,因为它消耗内存并且可能很慢。那么,解决方案是什么?图像保存在应用程序的文档文件夹中,而不是ALAssetsLibrary
。
答案 0 :(得分:3)
您需要使用较低级别的Quartz函数。将图像的前2K或4K读入NSData对象,然后将该数据传递给增量图像创建器,并询问其方向。如果你没有得到它,请阅读更大的块。 JPG几乎总是拥有前2K数据中的元数据(也许4K,自我编写此代码以来已经有一段时间了):
{
CGImageSourceRef imageSourcRef = CGImageSourceCreateIncremental(NULL);
CGImageSourceUpdateData(imageSourcRef, (__bridge CFDataRef)data, NO);
CFDictionaryRef dict = CGImageSourceCopyPropertiesAtIndex(imageSourcRef, 0, NULL);
if(dict) {
//CFShow(dict);
self.properties = CFBridgingRelease(dict);
if(!self.orientation) {
self.orientation = [[self.properties objectForKey:@"Orientation"] integerValue];
}
}
CFRelease(imageSourcRef);
}