코어 이미지, 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;
}}
도움말?
레이더를 쓰면 Apple의 누군가가이 문제를 조사 할 것입니다. –