2013-01-21 67 views
0

我在我的应用程序中有很多图像,现在我把所有图像都放在drawable中。图像已经预先压缩/优化以用于移动观看。 (但我希望这些所有图像在SD卡中,并使用该位置,而不是可绘制的,因为大量的图像)存储大量图像

我的一个要求是,我能够为用户提供离线访问。我想知道什么是最有效的方式

存储大量图像的

(约四百-几千个)

所以我的计划是,我将存储的所有图像在SD卡(通过将文件夹在其中),现在将这些 图像的链接存储在数据库表中。

因此,应用程序首先从数据库表中获取图像路径,然后从SD卡获取文件并显示它。

但我的问题是,我应该在开发应用程序时将这些图像放在哪里。

(我应该把我的所有绘制的图像,然后将其复制SD卡programitically,然后开始使用位置!)

1)如何在SD卡所有这些图像存储在发展的时间的应用程序。 ? 2)所以,当我将部署我的应用程序这些所有图像应该可以在包内?

回答

1

如果您有大量图像,那么在首次启动应用程序时,从远程位置下载图像并将它们存储在SD卡上并构建数据库表。将它们放在绘图中并将它们复制到SD卡上是没有意义的。

编辑

如果你想一个图像从绘制复制并存储在SD卡上,然后这里是你如何能做到这一点 -

你必须先绘制转换为位图对象。

Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.filenameindrawable); 

现在用FileOutputStream中

try { 
     FileOutputStream out = new FileOutputStream("file on sd card"); 
     bmp.compress(Bitmap.CompressFormat.PNG, 90, out); 
} catch (Exception e) { 
     e.printStackTrace(); 
} 

这是不推荐的,虽然方式将其存储在SD卡上。

+0

我为自己弱小的英语道歉,我没有从网上下载图片。我必须在我的应用程序包中放置所有图像,当我安装应用程序时,图像应该存储在某个目录中,并且具有图像名称的目录路径已经存储在数据库中。那么如何实现这一目标呢? – LogicBoy

+0

为什么你想在SD卡上的图像,而不是在可绘制的文件夹?你可以把所有东西放在可绘制的文件夹中,然后使用R.drawable.filename来获取它。这样你就不必维护数据库。 – Enigma

+0

我已经更新了我的答案。 – Enigma

0

在SD卡上存储应用程序图像不是一个好主意。因为如果有人在安装应用程序后没有SD卡或删除SD卡,则这些图像将无法用于uor应用程序。任何人都可以访问存储在SD卡中的图像。所以下载者应该在应用程序第一次启动时将这些图像存储在应用程序的内部文件系统上,方法是从远程位置下载图像并将它们存储在SD卡/ Internalfilesystem中并更新您的数据库表。

+0

感谢raj,但我将所有这些图像放在我的可绘制文件夹中,并且我没有从任何地方下载它,它将在安装应用程序时驻留在应用程序包中。所以让我知道把这些放在哪里。 drawable或其他地方。? – LogicBoy

+0

当我将安装apk,所有图像应该被复制到SD卡。?我如何做这个功能? – LogicBoy