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

时间:2013-12-08 14:43:34

标签: 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_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);
    }
}

2 个答案:

答案 0 :(得分:0)

你必须使用“blob”存储图像(位图)。

db.execSQL("CREATE TABLE Funny(picid TEXT,myimage BLOB,gender TEXT,country TEXT)");

使用以下方法插入数据:

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

例如:将图像存储到db

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

并从db

中检索图像
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 ;
} 

答案 1 :(得分:0)

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

有关数据存储的优秀教程: http://developer.android.com/training/basics/data-storage/files.html

然后在必要时保存数据库的路径: http://developer.android.com/training/basics/data-storage/databases.html

或简单地进入共享偏好: http://developer.android.com/training/basics/data-storage/shared-preferences.html

相关问题