iPhoneからファイルを読み込もうとするとNSDocumentsDirectory
、持っているパス文字列でイメージ ソースを作成できません。
エラー メッセージ " <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
. 皆さん、助けてくれてありがとう。
今、私はそれらをもう一度読んでみます。読むことは書くことと同じで、鏡に映されているだけだと思いました。
ファイルは最大 20 MB です - ...えっと、...それぞれ! - それも問題かもしれません...
これは、実際に表示する画像を提供するコード スニペットです (この回答についてGanapathyに感謝します)。
if ([self pathLastRawDataSave])
{
UIImage *anImage = [UIImage imageWithContentsOfFile:[self pathLastRawDataSave]];
if (NULL != anImage)
{
[[self imageView] setImage:anImage];
}
}
ただし、小さな例よりも常に複雑であり、メタデータ (および画像のサムネイル) も必要であるため、CGImageSource
結局、作業に戻ってしまうのではないかと心配しています。
ヘレカ!私はそれを見つけた!ミッシングリンクは方法でした fileURLWithPath
!
それとは別に、私はキャッシングを行っておらず、画像検索のために create options ディクショナリも使用しています。
これは実際に機能しています:
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]);
}
}