3

複数のサムネイル画像の「写真」タイプのプレゼンテーションを必要とするアプリの一部に取り組んでいます。フルサイズの画像は非常に大きく、毎回サムネイルを生成するのに時間がかかりすぎるため、サムネイルをキャッシュします。

サムネイルを作成した後、ファイルシステムにサムネイルを保存するのに最適な方法を判断するのに苦労しています。私はいくつかの可能性を考えることができますが、私はそれらのどれも好きではありません:

  • サムネイルを元のファイルと同じディレクトリに保存し、ファイル名に_Thumbを追加します(image.pngおよびimage_Thumb.png)。これはディレクトリを乱雑にし、一度にロードするために非常に多くの異なるファイルを読み取るため、パフォーマンスが問題になると思います。
  • 元のファイル名と同じファイル名で、サムネイルを独自のサブディレクトリに保存します。これは少しきれいだと思いますが、まだたくさんの異なるファイルを開いています。
  • すべてのサムネイルをサムネイルファイルに保存します。これはWindowsとOSXで一般的に行われていると思いますか?1つのファイルを開いて複数のサムネイルを読み取ることができるので、このアイデアは気に入っていますが、すべてを同じファイルに保存して元のファイルに関連付ける方法がわかりません。 編集:私は使用することを考えNSKeyedArchiver/unArchiverましたが、私が見つけたものから、サムネイルが追加/削除されるときはいつでも、アーカイブ全体を再作成する必要があります。おそらく私が見落としている何かがありますか?
  • 編集サムネイルをコアデータ/sqliteデータベースファイルに保存します。パフォーマンスが遅く、完了までに(比較的)長い時間がかかる書き込みでデータベースが破損する可能性があるため、データベースファイルにイメージを保存することは悪い考えであると長年聞いてきました。誰かがこの方法でどちらかを使用した経験がありますか?

取るべき最善のアプローチに関する提案はありますか?

4

1 に答える 1

2

私は2番目のオプションに行きます。iDeviceでは、フラッシュメモリを使用します。多くのファイルにアクセスすることによるパフォーマンスの低下は、HDDと比較して非常に低くなっています。また、同じファイルを頻繁に読み取らないように、一部をメモリにキャッシュすることもできます。SDWebImageキャッシュメカニズムには、その方法の優れたサンプルが含まれています。

3番目のオプション-そのために1つのファイルを使用することは、おそらくデータベースファイルを使用することを意味します。非圧縮データを保存すると、パフォーマンスが向上する可能性があります。より多くのデータ(非圧縮形式の親指)をロードすると、より多くのストレージアクセスのためにCPUの節約が遅くなる可能性があるため、いくつかのパフォーマンステストを実行する必要があります。

組み合わせたアプローチは、サムネイルをファイルとして保存しますが、非圧縮形式(.jpg、.pngなどではない)で保存することです。

サムネイルが適度に小さい限り、検討する価値のある4番目のオプション:CoreDataに保存します。

于 2012-12-23T23:10:49.027 に答える