如何在Android上将图像存储到本地数据库中

时间:2011-09-13 07:12:47

标签: android

在我的应用中,有一个问题。我正在从网上下载图像,这些图像存储在本地数据库中。如何将这些图像存储到本地数据库中?

4 个答案:

答案 0 :(得分:0)

您可以通过多种方式实现这一点,将其存储为BLOB或存储图像路径 很好的例子 here

答案 1 :(得分:0)

要在数据库中存储图像,您的表创建应为:

db.execSQL("CREATE TABLE Funny(picid TEXT,myimage BLOB,gender TEXT,country TEXT)");

图像类型为blob。

将图像URL转换为字节形式,如下所示:

URL url = null;
try {
    url = new URL(YOUR IMAGE URL);
}
catch (MalformedURLException e2) {
    e2.printStackTrace();
}

URLConnection ucon = null;
try {
    ucon = url.openConnection();
}
catch (IOException e1) {
    e1.printStackTrace();
}

InputStream is = null;
try {
    is = ucon.getInputStream();
}
catch (IOException e) {
    e.printStackTrace();
}
BufferedInputStream bis = new BufferedInputStream(is,128);
ByteArrayBuffer baf = new ByteArrayBuffer(128);

int current = 0;
try {
    while ((current = bis.read()) != -1) {
        baf.append((byte) current);
    }
}
catch (IOException e) {
    e.printStackTrace();
}
bb = baf.toByteArray();
help.insert(picid[0],bb, gender1[0], country1[0]);

插入语句是:

public void insert(String string,byte[] bytes, String gender, String country) {
    ContentValues cv = new ContentValues();
    cv.put("picid", string);
    cv.put("myimage", bytes);
    cv.put("gender", gender);
    cv.put("country", country);
    getWritableDatabase().insert("Funny","gender", cv);
    Log.e("inserted", "inserted");
}

我希望这会对你有所帮助。

答案 2 :(得分:0)

我宁愿将图像文件存储在缓存文件夹中,只存储本地数据库中的路径,因为它可以使您的应用程序更具可扩展性,而不会使数据库过载。

您可以使用此路径缓存图片:

File dataPath = new File(Environment.getDataDirectory(), yourPackageName);

请参阅此处documentation

答案 3 :(得分:0)

图像可以作为bytearray存储到数据库中。您可以从以下教程中获得有关如何从数据库存储和检索图像的一个很好的示例。

Here is the tutorial for image store in a database