【发布时间】:2015-01-31 23:07:23
【问题描述】:
我正在使用 Core Image、CIFilter 和 RAW 图像。如果我正确理解 Apple 的文档,加载 RAW 图像并将其显示在图像视图中,类似这样的代码应该可以解决问题:
NSURL *url = [NSURL URLWithString:@"file:///Users/emiel/Desktop/_MG_1087.CR2"];
// NSURL *url = [NSURL URLWithString:@"file:///Users/emiel/Desktop/_DSC0044.NEF"];
CIFilter *filter = [CIFilter filterWithImageURL:url options:nil];
NSLog(@"CIFilter: %@", filter);
CIImage *image = filter.outputImage;
NSCIImageRep *rep = [NSCIImageRep imageRepWithCIImage:image];
NSLog(@"%f - %f", rep.size.width, rep.size.height);
NSImage *nsImage = [[NSImage alloc] initWithSize:CGSizeMake(rep.size.width, rep.size.height)];
[nsImage addRepresentation:rep];
self.imageView.image = nsImage;
此代码适用于 .NEF (Nikon RAW) 文件,但 CR2 (Canon RAW) 文件给我一个全黑的图像。黑色图像的图像尺寸是正确的。这里出了什么问题?我需要将一些默认值设置为非默认值吗? Preview/Aperture/iPhoto/etc 都适用于我的 .CR2 图像,因此可以阅读它们。
我能找到的唯一区别是,显然,对于 CR2 文件,使用的是版本 6 的解码器,而 NEF 文件是由版本 5 解码的。如果我将 CR2 设置为由版本 5 解码,一切正常,但这似乎是一个奇怪的解决方案,因为我不知道是否有版本 5 或 6 或其他 RAW 图像格式。
NEF 文件:
{CIRAWFilterImpl {
inputBias = 3;
inputBoost = 1;
inputBoostShadowAmount = "0.9";
inputColorNoiseReductionAmount = "0.5";
inputDecoderVersion = 5;
inputDraftMode = 0;
inputEV = 0;
inputEnableNoiseTracking = 1;
inputEnableSharpening = 1;
inputEnableVendorLensCorrection = 0;
inputIgnoreOrientation = "<null>";
inputImageOrientation = 1;
inputLinearSpaceFilter = "<null>";
inputLuminanceNoiseReductionAmount = "0.1";
inputNeutralChromaticityX = "0.4212473792917087";
inputNeutralChromaticityY = "0.4060714400950335";
inputNeutralLocation = "[]";
inputNeutralTemperature = "3296.579476861167";
inputNeutralTint = "3.848452212530264";
inputNoiseReductionAmount = "<null>";
inputNoiseReductionContrastAmount = 0;
inputNoiseReductionDetailAmount = 0;
inputNoiseReductionSharpnessAmount = "0.5";
inputScaleFactor = 1;
}}
CR2 文件:
{CIRAWFilterImpl {
inputBias = 3;
inputBoost = 1;
inputBoostShadowAmount = "0.9";
inputColorNoiseReductionAmount = "0.5";
inputDecoderVersion = 6;
inputDraftMode = 0;
inputEV = 0;
inputEnableNoiseTracking = 1;
inputEnableSharpening = 1;
inputEnableVendorLensCorrection = 0;
inputIgnoreOrientation = "<null>";
inputImageOrientation = 1;
inputLinearSpaceFilter = "<null>";
inputLuminanceNoiseReductionAmount = 0;
inputNeutralChromaticityX = "0.3575430840790828";
inputNeutralChromaticityY = "0.3599707869545071";
inputNeutralLocation = "[]";
inputNeutralTemperature = "4585.861752390336";
inputNeutralTint = "-11.18923977879745";
inputNoiseReductionAmount = "<null>";
inputNoiseReductionContrastAmount = 0;
inputNoiseReductionDetailAmount = 0;
inputNoiseReductionSharpnessAmount = "0.5";
inputScaleFactor = 1;
}}
帮助?
【问题讨论】:
-
写一个雷达,Apple 的人会调查这个。
标签: macos photo osx-yosemite core-image