【发布时间】:2012-12-16 03:37:09
【问题描述】:
我想知道将图像作为 BLOB 存储在 sqlite 数据库中是否是个好主意? 有没有人有性能 - 存储图像(blob)的经验。
我的 android 应用程序很小,需要处理 20 到 100 张图片(每张图片 100 kb 到 1MB)。最坏的情况:我会说,我的数据库可以达到 100 MB 的大小。这对数据库性能有显着影响吗? 平均情况:我猜我的应用程序的平均用户有 40 张图片,每张图片 200 kb,所以数据库的大小约为 8 MB。 顺便提一句。当然数据库还存储其他“正常”数据,所以它不仅仅是一个图像数据库:)
存储存储在存储(内部或 SD 卡)上的图像的路径是更好的方法吗?我想从数据库中检索图像文件路径并从文件中打开和加载图像会慢一些(但不是很重要,因为我一次只需要加载两个图像)。
第二个问题: 如果我使用第二种方法(将图像文件的路径存储在数据库中并加载图像文件): 磁盘缓存(DiskLruCache)在这种情况下有用吗?它会带来显着的性能提升吗?我的理解是磁盘缓存将存储位图(而不是编码的 jpg 或 png),因此磁盘缓存将直接从存储加载位图,我的应用程序将节省解码图像(jpg 或 png)的时间。那是对的吗? 顺便提一句。在“数据库方法”中,我会将已经解码的图像存储为位图。所以在我看来它类似于磁盘缓存,不是吗?
编辑: 我忘了告诉你,我需要将图像持久存储在设备上。我不是在谈论缓存图像,例如我从 Web 服务中检索到的图像......
【问题讨论】:
-
为什么不将图像保存到缓存文件夹?
-
1.用户可以在安卓应用设置中清除缓存。 2. 在缓存文件夹中保存图像与将文件保存在任何其他文件夹中具有相同的性能,不是吗? 3. 我喜欢事务的概念,我可以通过将图像存储在数据库中来使用
-
您可以保存到您喜欢的文件夹或外部存储,更多信息请阅读developer.android.com/guide/topics/data/data-storage.html不建议将图像保存到数据库
标签: android image sqlite caching