如何在sqlite中保存图像并显示它?

时间:2014-12-25 11:23:27

标签: android json sqlite download

我有一个数据库,数据库内容是名称,地址,图像(varchar)和images文件夹。我已经解析器(使用json)并存储在sqlite中,是否可以将图像下载到sqlite?我还想在一个应用程序中呈现它?怎么做 ? 请让我知道:(

3 个答案:

答案 0 :(得分:1)

将图像放在sqlite中是不好的做法。 你应该将img存储为文件,并将img的文件路径放到sqlite。

答案 1 :(得分:0)

将它们序列化为内部存储并将路径保存为普通字符串值。但如果您的图片是动态的(从网络资源中加载),我最好保存他们的链接并使用LruCache http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

答案 2 :(得分:0)

// Create a table with BLOB datatype 
     String SQL_TABLE = "create table "
      + TABLE_MESSAGE + "(" + "id"
      + " integer primary key autoincrement, "
      + "name"  + " text not null, "
      + address     + " text not null, " 
      + image   + " BLOB);";


      to store image into this you have to convert it to bytes like so:

     public static byte[] makeByte(Bitmap bitmap) {

     if (bitmap == null) {
     return null;
     } else {
     byte[] b = null;
     try {
     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
     bitmap.compress(CompressFormat.JPEG, 75, byteArrayOutputStream);
     b = byteArrayOutputStream.toByteArray();
     } catch (Exception e) {
     e.printStackTrace();
     }
     return b;
     }
     }
在获取字节之后

,您可以像保存或更新任何其他字段一样保存到数据库中。 然后您可以使用此功能重新创建图像并添加到ImageView

    public static Bitmap getBitmapFromByte(byte[] pByte){
    if (pByte == null) {
        return null;
    }
    Bitmap bmp = BitmapFactory.decodeByteArray(pByte, 0, pByte.length);

    return bmp;
    }

将上面的函数传递给你存储在数据库中的字节,这将返回一个可以在imageview上设置的位图         exmaple Bitmap img = getBitmapFromByte(byteData);