我正在尝试将RAW图像加载到iOS项目进行显示。目前,我正在使用这段代码加载原始图像。
CFDictionaryRef optionsRef = (__bridge CFDictionaryRef) @{
// (id) kCGImageSourceShouldAllowFloat: @YES,
(id) kCGImageSourceCreateThumbnailWithTransform : @YES,
(id) kCGImageSourceCreateThumbnailFromImageAlways : @YES,
(id) kCGImageSourceThumbnailMaxPixelSize : @(MAX(SCREEN_HEIGHT, SCREEN_WIDTH) * ([UIScreen mainScreen].scale))
};
CGImageSourceRef imageSourceRef = CGImageSourceCreateWithURL((CFURLRef)imageUrl, NULL);
if (!imageSourceRef)
return nil;
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:NO], (NSString *)kCGImageSourceShouldCache,
nil];
CFDictionaryRef imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSourceRef, 0, (CFDictionaryRef)options);
if (imageProperties) {
NSNumber *width = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth);
NSNumber *height = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight);
NSLog(@"Image dimensions: %@ x %@ px", width, height);
CFRelease(imageProperties);
}
问题是,这段代码可以完美地与某些图像一起使用,而它与其他图像的行为很奇怪。例如,我加载了一个图像,它显示宽度为128,高度为96,而正确的宽度高度为4320×3240。
我不确定这里的问题是什么,因为我所做的只是将图像加载到CGImageSourceRef。 :(
答案 0 :(得分:0)
原始你的意思是相机生? (例如尼康NEF文件?)
据我所知,iOS没有原始图像解析引擎。它唯一能做的就是加载嵌入的JPEG缩略图。您可能看到缩略图的大小,而不是完整原始图像的大小。
免责声明:我从未试图在iOS中打开相机原始图像,因此我对iOS所做的回答是基于对我所读过的内容的不完美记忆。
答案 1 :(得分:0)
Nikon有可供下载的库,我认为它们是源代码形式。可能是C或C ++,因此编译它们并弄清楚如何从iOS使用它们将花费一些工作,但应该是可能的。您应该可以在尼康网站上找到它们。