當試圖加載iPhone的NSDocumentsDirectory
文件時,我無法使用我擁有的路徑字符串創建圖像源。如何從NSDocumentsDirectory加載自制的TIFF圖像文件
我收到錯誤消息「<Error>: ImageIO: CGImageSourceCreateWithURL CFURLCreateDataAndPropertiesFromResource failed with error code -15.
」,這是一個kCFURLImproperArgumentsError
。
但是,我找不到什麼「適當的」參數可能。示例路徑將是:「/var/mobile/Applications/36D76BDF-72EC-4180-9246-CF1F50CF396C/Documents/2013080110555532Image.tiff
」
在我的問題How to save a TIFF...中,我現在記錄如何將文件寫入NSDocumentsDirectory
。夥計們再次感謝您的幫助。
現在我試着再讀一遍。我認爲閱讀就像寫作,只有鏡像。
這些文件是〜20MB - ...啊哈,每個! - 這可能是一個問題,以及...
這是一個代碼段(感謝Ganapathy爲this答案),其實讓我來顯示圖像:
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]);
}
}