2013-07-16 1 views
0

iPhone의 NSDocumentsDirectory에서 파일을로드하려고 할 때 내가 갖고있는 경로 문자열로 이미지 소스를 만들 수 없습니다.NSDocumentsDirectory에서 자체 제작 한 TIFF 이미지 파일을로드하는 방법

kCFURLImproperArgumentsError 인 오류 메시지 "<Error>: ImageIO: CGImageSourceCreateWithURL CFURLCreateDataAndPropertiesFromResource failed with error code -15."이 표시됩니다.

그러나 "올바른"인수가 무엇인지 알 수 없습니다. 예를 들어 경로는 다음과 같습니다. "/var/mobile/Applications/36D76BDF-72EC-4180-9246-CF1F50CF396C/Documents/2013080110555532Image.tiff"

제 질문은 How to save a TIFF...입니다. 이제 파일을 NSDocumentsDirectory에 쓰는 방법을 설명합니다. 도움에 다시 한번 감사드립니다.

이제 I 으로 다시 시도하십시오. 나는 생각은 독서가 쓰기와 같았고, 단지 비췄다.
파일은 ~ 20MB입니다 ... ... 헴, ... 각각! - 그 문제는

이 코드는 ...뿐만 아니라 수 있습니다 (감사 this 답변 Ganapathy에) 실제로 나에게 디스플레이에 이미지 제공 :

if ([self pathLastRawDataSave]) 
{ 
    UIImage *anImage = [UIImage imageWithContentsOfFile:[self pathLastRawDataSave]]; 

    if (NULL != anImage) 
    { 
     [[self imageView] setImage:anImage]; 
    } 
} 

그러나, 그것은이다 작은 예제보다 항상 더 복잡하고 메타 데이터 (그리고 이미지의 축소판 그림)가 필요하기 때문에 결국 나는 CGImageSource 작업으로 돌아갈까 두려워합니다.

Heureka! 나는 그것을 발견했다! 누락 된 링크는 방법이었다fileURLWithPath! 그 외에도 캐싱하지 않으며 이미지 검색을 위해 옵션 생성 사전을 사용합니다.

이 실제로 작동 :

if ([self pathLastRawDataSave]) 
{ 
    NSURL* imageFileURL = [NSURL fileURLWithPath:[self pathLastRawDataSave]]; 

    CFURLRef imageFileURLRef = (__bridge CFURLRef)imageFileURL; // bridged from NS-Object, no release! 

    NSDictionary* sourceOptions = @{(id)kCGImageSourceShouldCache: (id)kCFBooleanFalse, 
            (id)kCGImageSourceTypeIdentifierHint: (id)kUTTypeTIFF}; 

    CFDictionaryRef sourceOptionsRef = (__bridge CFDictionaryRef)sourceOptions; // bridged from NS-Object, no release! 

    CGImageSourceRef imageSource = CGImageSourceCreateWithURL(imageFileURLRef, sourceOptionsRef); 


    if (NULL != imageSource) 
    { 
     // create the image from the file 
     CGImageRef imageData = CGImageSourceCreateImageAtIndex(imageSource, 0, sourceOptionsRef); 

     // release core foundation object 
     CFRelease(imageSource); 
    } 
    else 
    { 
     // Error opening image file 
     HLSLoggerFatal(@"Image source could not be accessed at path %@", [self pathLastRawDataSave]); 
    } 
} 

답변

0

Heureka을! 나는 그것을 발견했다! 누락 된 링크는 방법이었다fileURLWithPath! 그 외에도 캐싱하지 않으며 이미지 검색을 위해 옵션 생성 사전을 사용합니다.

실제로 노력하고 있습니다 :

if ([self pathLastRawDataSave]) 
{ 
    NSURL* imageFileURL = [NSURL fileURLWithPath:[self pathLastRawDataSave]]; 

    CFURLRef imageFileURLRef = (__bridge CFURLRef)imageFileURL; // bridged from NS-Object, no release! 

    NSDictionary* sourceOptions = @{(id)kCGImageSourceShouldCache: (id)kCFBooleanFalse, 
            (id)kCGImageSourceTypeIdentifierHint: (id)kUTTypeTIFF}; 

    CFDictionaryRef sourceOptionsRef = (__bridge CFDictionaryRef)sourceOptions; // bridged from NS-Object, no release! 

    CGImageSourceRef imageSource = CGImageSourceCreateWithURL(imageFileURLRef, sourceOptionsRef); 


    if (NULL != imageSource) 
    { 
     // create the image from the file 
     CGImageRef imageData = CGImageSourceCreateImageAtIndex(imageSource, 0, sourceOptionsRef); 

     // release core foundation object 
     CFRelease(imageSource); 
    } 
    else 
    { 
     // Error opening image file 
     HLSLoggerFatal(@"Image source could not be accessed at path %@", [self pathLastRawDataSave]); 
    } 
} 
관련 문제