2015-01-31 8 views
0

코어 이미지, CIFilter 및 RAW 이미지로 조금 놀고 있습니다. 내가 제대로 애플의 설명서를 이해한다면, RAW 이미지를로드하고 이미지보기에 표시하기 위해이 같은 일부 코드는 트릭을 수행해야합니다요세미티의 CIFilter 및 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 (니콘 RAW) 파일에 대해 잘 작동, 그러나 CR2 (Canon RAW) 파일은 나에게 완전히 검은 이미지를줍니다. 하지만 검은 색 이미지의 이미지 크기는 정확합니다. 여기서 뭐가 잘못 됐어? 기본값을 기본값이 아닌 값으로 설정해야합니까? 미리보기/Aperture/iPhoto/etc는 모두 .CR2 이미지로 잘 작동하므로 읽을 수 있습니다.

유일한 차이점은 CR2 파일의 경우 6 버전의 디코더가 사용되며 NEF 파일은 버전 5로 디코딩된다는 것입니다. CR2를 버전 5로 디코딩하도록 설정하면 모든 기능이 작동합니다 ,하지만 이것은 다른 RAW 이미지 형식에 대해 버전 5 또는 6이 있는지 여부를 모르기 때문에 기묘한 해결책으로 보입니다.

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; 
}} 

도움말?

+0

레이더를 쓰면 Apple의 누군가가이 문제를 조사 할 것입니다. –

답변

3

이것은 Apple Devforums의 게시물에 따르면 10.10.2의 회귀 및/또는 최신 RAW 호환성 업데이트로 보입니다. 유일하게 알려진 해결 방법은 inputDecoderVersion을 5로 수동으로 덮어 쓰는 것입니다.

또한 레이더를 제출하여 Apple이주의를 기울 이도록하십시오.