CGImageSourceCreateThumbnailAtIndex(...) を使用して、何千もの CGImage オブジェクトを作成する必要があります。
問題は、 simple のCGDataProviderCreateWithURL(...)後に を使用するCGImageSourceCreateThumbnailAtIndex(...)と、システムがファイルの内容を (非アクティブなメモリに) キャッシュするため、パフォーマンスが大幅に低下することです。
最も近い解決策:
ここ[NSData dataWithContentsOfURL:inURL options:NSUncachedRead error:nil]では、 を使用しCGImageSourceCreateWithData(...)て、システムによるファイルのキャッシュを防止することが提案されました。
最も近い解決策の問題
このソリューションでは、サムネイルを作成する前にファイル全体をメモリに読み込む必要があるため、パフォーマンスが大幅に低下します。
私がすでに試したこと:
使用していますが
[NSData dataWithContentsOfURL:inURL options:NSUncachedRead|NSDataReadingMappedAlways error:nil];、オプションを無視しているようですNSUncachedRead(ファイルは非アクティブなメモリにキャッシュされています)。を使用し
CGDataProviderCreateWithURLますが、ファイルもキャッシュします。編集: @justin
CGDataProviderが提案したように CGDataProviderCreateSequential(...) で作成されたカスタムを使用しますが、CGImageSourceCreateThumbnailAtIndex.CGImageSourceCreateWithDataProviderCGDataProviderCopyData
ファイル全体をメモリにロードせずにキャッシュせずにサムネイルを取得する方法の提案はありますか?
PS画像ソースとサムネイルを作成するときにすでに設定kCGImageSourceShouldCacheしてkCFBooleanFalseいますが、ファイルの読み取り時にキャッシュされる生データではなく、デコードされたデータのみに関連しているようです。
編集:私は10.8を使用しています。CGImageSourceCreateWithDataProvider などの関数の実装は、他のプラットフォーム/バージョンでは異なる場合があります。