gpt4 book ai didi

objective-c - 缩略图存储策略

转载 作者:搜寻专家 更新时间:2023-10-30 20:20:05 26 4
gpt4 key购买 nike

我正在开发一个应用程序的一部分,它需要多个缩略图的“照片”类型演示。全尺寸图片比较大,每次生成缩略图时间太长,所以我打算缓存缩略图。

创建缩略图后,我很难确定如何最好地将它们存储在文件系统中。我能想到一些可能性,但我不喜欢其中任何一种:

  • 将缩略图保存在与原始文件相同的目录中,并将 _Thumb 添加到文件名(image.png 和 image_Thumb.png)中。这会导致目录困惑,我认为性能会成为一个问题,因为一次要读取这么多不同的文件。
  • 将缩略图保存在各自的子目录中,文件名与原始文件名相同。我认为这样稍微干净一些,但我仍然要打开很多不同的文件。
  • 将所有缩略图保存到缩略图文件中。我认为这通常在 Windows 和 OS X 中完成?我喜欢这个想法,因为我可以打开一个文件并从中读取多个缩略图,但我不确定如何将它们全部存储在同一个文件中并将它们与原始文件相关联。 编辑: 我想过使用 NSKeyedArchiver/unArchiver 但据我所知,无论何时添加/删除缩略图,我都必须重新创建整个存档。也许我忽略了什么?
  • 编辑 将缩略图存储在核心数据/sqlite 数据库文件中。多年来,我听说将图像存储在数据库文件中是个坏主意,因为性能低下,并且在需要(相对)较长时间才能完成的写入时可能会损坏数据库。有没有人有以这种方式使用其中任何一种的经验?

关于最佳方法有什么建议吗?

最佳答案

我会选择第二个选项。在 iDevices 上,您使用闪存。与 HDD 相比,访问许多文件的性能损失非常低。您还可以在内存中缓存一些,以防止过于频繁地读取同一个文件。 SDWebImage缓存机制包含一个很好的示例如何做到这一点。

第三个选项 - 使用一个文件可能意味着使用数据库文件。如果您存储未压缩的数据,您可以在那里获得一些性能改进。您需要进行一些性能测试,因为加载更多数据(拇指的未压缩形式)可能会减慢速度,从而节省 CPU 以进行更多存储访问。

组合方法是将缩略图存储为文件,但采用未压缩格式(不是 .jpg、.png 等)

第四个选项值得考虑,只要缩略图相当小:将它们保存在 CoreData 中。

关于objective-c - 缩略图存储策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14015153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com