为了账号安全,请及时绑定邮箱和手机立即绑定

如何在SQLite数据库中存储图像

如何在SQLite数据库中存储图像

如何在SQLite数据库中存储图像在我的应用程序中,我从图片库上传一个图像,并希望将该图像存储在SQLite数据库中。如何在数据库中存储位图?我正在将位图转换为字符串,并将其保存在数据库中。当从数据库检索它时,我无法将该字符串分配给ImageView,因为它是一个字符串。Imageupload 12.java: public class Imageupload12 extends Activity {   Button buttonLoadImage;   ImageView targetImage;   int i = 0;   Database database = new Database(this);   String i1;   String img;   @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main5);    buttonLoadImage = (Button) findViewById(R.id.loadimage);    targetImage = (ImageView) findViewById(R.id.targetimage);    Bundle b = getIntent().getExtras();    if (b != null) {     img = b.getString("image");     targetImage2.setImageURI("image");     //i am getting error as i cant assign string to imageview.    }    buttonLoadImage.setOnClickListener(new Button.OnClickListener() {     public void onClick(View arg0) {      // TODO Auto-generated method stub      Intent intent = new Intent(Intent.ACTION_PICK,       android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);      Log.i("photo", "" + intent);      startActivityForResult(intent, i);      i = i + 1;     }    });   }    }   }  }
查看完整描述

3 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

你必须使用“BLOB”来存储图像。

示例:将图像存储到db:

public void insertImg(int id , Bitmap img ) {   


    byte[] data = getBitmapAsByteArray(img); // this is a function

    insertStatement_logo.bindLong(1, id);       
    insertStatement_logo.bindBlob(2, data);

    insertStatement_logo.executeInsert();
    insertStatement_logo.clearBindings() ;}

 public static byte[] getBitmapAsByteArray(Bitmap bitmap) {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    bitmap.compress(CompressFormat.PNG, 0, outputStream);       
    return outputStream.toByteArray();}

要从db检索图像:

public Bitmap getImage(int i){

    String qu = "select img  from table where feedid=" + i ;
    Cursor cur = db.rawQuery(qu, null);

    if (cur.moveToFirst()){
        byte[] imgByte = cur.getBlob(0);
        cur.close();
        return BitmapFactory.decodeByteArray(imgByte, 0, imgByte.length);
    }
    if (cur != null && !cur.isClosed()) {
        cur.close();
    }       

    return null;}


查看完整回答
反对 回复 2019-06-20
  • 3 回答
  • 0 关注
  • 2009 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信