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

如何在Android上将图像存储到本地数据库,android,Android,在我的应用程序中,有一个问题。我正在从网上下载图像,这些图像存储在本地数据库中。如何将这些图像存储到本地数据库中?您可以通过多种方式来实现,或者将其存储为BLOB,或者存储图像的路径 很好的例子要在数据库中存储图像,您的表创建应该是: db.execSQL("CREATE TABLE Funny(picid TEXT,myimage BLOB,gender TEXT,country TEXT)"); 图像类型为blob 将图像转换为字节格式,如下所示: URL url = null; try

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

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

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

db.execSQL("CREATE TABLE Funny(picid TEXT,myimage BLOB,gender TEXT,country TEXT)");
图像类型为blob

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

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]);
insert语句是:

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");
}

我希望这对您有所帮助。

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

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

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

请参见此处。

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


存储在SD卡上对于SD卡,我得到了内存不足的例外,这对您的数据库来说也是一个坏兆头,因为您说您将有很多图像,SD卡的容量可能比设备本身更大。SD卡可以存储GB的数据。。您正在下载和存储的图像的大小。以前,当检索时间出现内存不足异常时,我将图像存储在sd卡中。请参阅此。此处,您将加载的图像存储到数据库中。在这里,你可以返回drawable,那么如何将这个drawable存储在db中?在同一个链接上,请参见下面我的回答本地db大小是多少?因为我有很多图像/这里有没有可能出现内存不足异常?取决于,现在设备的内存越来越大,所以出现内存不足异常的机会越来越少。因为在我的很多图片中,最好减小imageshow的大小来创建表?请在我的答案db.execSQL(“CREATE TABLE funny”)上方发送syntaxsee。我想问的是如何创建db ref变量。这里使用db。db是什么?