【问题标题】:CIFilter and RAW image support on YosemiteYosemite 上的 CIFilter 和 RAW 图像支持
【发布时间】: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


【解决方案1】:

根据 Apple Devforums 中的帖子,这似乎是 10.10.2 和/或最新的 RAW 兼容性更新中的回归。唯一已知的解决方法是将 inputDecoderVersion 手动覆盖为 5。

请同时提交 Radar,以便 Apple 注意到。

【讨论】:

    猜你喜欢
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    相关资源
    最近更新 更多