5

我想知道在 sqlite 数据库中将图像存储为 BLOB 是否是个好主意?有没有人有性能 - 存储图像(blob)的经验。

我的 android 应用程序很小,需要处理 20 到 100 张图像(每张图像 100 kb 到 1MB)。最坏的情况:我会说,我的数据库可能达到 100 MB 的大小。这对数据库性能有显着影响吗?平均情况:我猜我的应用程序的平均用户有 40 张图片,每张图片 200 kb,因此数据库的大小约为 8 MB。顺便提一句。当然,数据库还存储其他“正常”数据,因此它不仅仅是图像数据库:)

存储存储在存储(内部或 SD 卡)上的图像的路径是更好的方法吗?我想从数据库中检索图像文件路径并从文件中打开和加载图像会有点慢(但不是很重要,因为我一次只需要加载两个图像)。

第二个问题:如果我使用第二种方法(将图像文件的路径存储在数据库中并加载图像文件):磁盘缓存(DiskLruCache)在这种情况下有用吗?它会带来显着的性能提升吗?我的理解是磁盘缓存将存储位图(而不是编码的 jpg 或 png),因此磁盘缓存将直接从存储加载位图,我的应用程序将节省解码图像(jpg 或 png)的时间。那是对的吗?顺便提一句。在“数据库方法”中,我会将已经解码的图像存储为位图。所以在我看来,它与磁盘缓存类似,不是吗?

编辑:我忘了告诉你,我需要将图像持久存储在设备上。我不是在谈论缓存图像,例如我从 Web 服务中检索到的图像......

4

1 回答 1

3

我的猜测是,如果你在其中存储这么多信息,数据库会变得非常慢,尤其是当你自己检索图像时。

另一方面,据我所知,每个用户在安装应用程序后都会下载与他相关的图像。这是使用另一个 SO 用户在我几天前提出的问题中向我推荐的库的理想场所:Universal Image Downloader。这是我所说的线程的链接。

该库用于磁盘缓存,但为您抽象了所有复杂性(希望我还没有尝试过,但它看起来很有希望)。

于 2013-01-01T13:14:38.243 回答