Android:将图像保存到Sqlite数据库中

时间:2013-01-01 13:04:35

标签: android image sqlite caching

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

我的猜测是,如果您将大量信息存储在数据库中,数据库会明显变慢,尤其是当您自己检索图像时。

另一方面,当我得到它时,每个用户在安装应用程序后都会下载与他相关联的图像。这是使用图书馆的另一个SO用户推荐给我的完美场所我几天前问的问题:Universal Image Downloader。这是我所说的the thread的链接。

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