Android 从相机捕获图像并存储在数据库中

Android 从相机捕获图像并存储在数据库中,android,Android,我想将图像存储到SQLite数据库中,该数据库是从照相机捕获的。这是我的代码,用于在我构造将图像存储到数据库中之后从照相机捕获图像 public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.photobtn: i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CA

我想将图像存储到SQLite数据库中,该数据库是从照相机捕获的。这是我的代码,用于在我构造将图像存储到数据库中之后从照相机捕获图像

public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.photobtn:
        i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(i, camaradata);
        break;
    case R.id.submit:
        break;
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        bmp = (Bitmap) extras.get("data");
        imageview.setImageBitmap(bmp);
    }
}
您必须使用“blob”来存储图像(位图)

使用以下命令插入数据:

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");
 }
例如:将图像存储到数据库中

public void insertImg(int id , Bitmap img ) {   


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

    db.insert("01",data,"male","Pakistan");

}

 public static byte[] getBitmapAsByteArray(Bitmap bitmap) {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    bitmap.compress(CompressFormat.PNG, 0, outputStream);       
    return outputStream.toByteArray();
}
以及从数据库中检索图像

public Bitmap getImage(int i){

    String qu = "select myimage from Funny where picid=" + 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 ;
} 

将图像存储到数据库中不是一个好主意,只需将其存储到外部存储器,并可能将链接保存到数据库中即可

关于数据存储的好教程:

然后根据需要保存数据库的路径:

或者直接进入共享首选项:

将图像存储到数据库中不是一个好主意,只需将其存储到外部存储器,并可能将链接保存到数据库中…@mindsonic ok..我同意你的看法..但你能帮我解决如何将图像存储到外部存储器中的问题吗?我可以使用“contentvalue”对象插入此数据吗..以及如何。。??
public Bitmap getImage(int i){

    String qu = "select myimage from Funny where picid=" + 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 ;
}