【问题标题】:How to save bitmap in database?如何将位图保存在数据库中?
【发布时间】:2011-06-14 09:48:21
【问题描述】:

我想知道如何在数据库中保存位图。我在 db 中创建了表:

@Override
public void onCreate(SQLiteDatabase db)
{
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (_id INTEGER PRIMARY KEY AUTOINCREMENT,image BLOB)");         
}    

我的问题是我无法插入图像。请告诉我我需要以哪种格式插入图像。

【问题讨论】:

  • 我想知道你为什么要将它保存到数据库中。您可以将图像保存在某处并将其路径存储在数据库中。

标签: android


【解决方案1】:

如果您有位图图像,那么您可以执行以下操作。

Bitmap photo = <Your image>
ByteArrayOutputStream bos = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.PNG, 100, bos);
byte[] bArray = bos.toByteArray();

然后您可以使用以下方式将数据保存在表中。

db = YourDBHelper.getInstance(ctx).getWritableDatabase();    
ContentValues values = new ContentValues();         
values.put("image", bArray);            
db.insert(TABLE_NAME , null, values);

【讨论】:

  • +1 除了不显示create table 代码,这应该被接受。
  • 不建议将图像存储在数据库中,而是存储在文件系统中,路径保存在db表中。
  • 我们应该将图像存储到用户手机内存还是 SD 卡? sqlite中存储字节数组效率低吗?
【解决方案2】:

如果你想这样做,你需要使用 blob。但你为什么要这样做..我不会将图像存储到数据库中。最好将图像存储在 sdcard 上,然后将其路径存储到数据库中。通常数据库安装在手机内存中,这只会填满手机内存......

【讨论】:

    【解决方案3】:
    【解决方案4】:

    试试这个

    InputStream is = mycon.getAssets().open("data/Images/img1");
                    if (is.available() == -1) {
                        Log.v(null, "Images not read to Input stream");
                    }
                    if (is != null) {
                        BufferedInputStream bis = new BufferedInputStream(is, 128);
                        ByteArrayBuffer barb = new ByteArrayBuffer(128);
                        // read the bytes one by one and append it into the
                        // ByteArrayBuffer barb
                        int current = 0;
                        while ((current = bis.read()) != -1) {
                            barb.append((byte) current);
                        }
                        values.put("imageData", barb.toByteArray());
    

    【讨论】:

      猜你喜欢
      • 2015-03-26
      • 2015-01-08
      • 2013-02-09
      • 1970-01-01
      • 2017-05-25
      • 2013-10-04
      • 2014-10-01
      • 2015-12-17
      • 2019-12-23
      相关资源
      最近更新 更多