我的应用程序中有很多图像现在我把所有图像都放在了可绘制的内容中。图像已经过预压缩/优化,适合移动观看。 (但我希望这些所有图像都在SD卡中并使用该位置而不是可绘制的。因为图像数量很大)
我的一个要求是我能够为用户提供离线访问。我想知道什么是最有效的方式
存储大量图像(约四十万)
所以我的计划是我将所有图像存储在SD卡中(通过在其中创建一个文件夹),现在存储这些图像的链接 数据库中的图像。
因此App首先从DB Table获取图像路径,然后从SD卡中获取文件并显示它。
但我的问题是在开发app时我应该把这些图片放在哪里。
(我应该将所有图像放入drawable中,然后以编程方式复制sdcard,然后开始使用该位置!!!)
1)如何在开发应用程序时将所有这些图像存储在SD卡中。 ? 2)因此,当我部署我的应用程序时,这些图像应该在包内可用吗?
答案 0 :(得分:1)
如果您有大量图像,那么在首次启动应用程序时,从远程位置下载图像并将其存储在SD卡上并构建数据库表。将它们放在您的drawable中然后将它们复制到SD卡是没有意义的。
修改
如果您想从drawable复制图像并将其存储在SD卡上,那么您可以按照以下方式进行操作 -
您必须先将drawable转换为位图对象。
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.filenameindrawable);
现在使用FileOutputStream
将其存储在您的SD卡上try {
FileOutputStream out = new FileOutputStream("file on sd card");
bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
} catch (Exception e) {
e.printStackTrace();
}
这不是推荐的方式。
答案 1 :(得分:0)
在SD卡上存储应用程序图像不是一个好主意。因为如果某人在您的应用安装后没有SD卡或移除SD卡,那么这些图片将无法用于uor应用。任何人都可以访问存储在SD卡中的图像。所以bettor会在第一次启动应用程序时通过从远程位置下载图像将这些图像存储在应用程序的内部文件系统上,并将它们存储在SD卡/ Internalfilesystem上并更新数据库表。