Android:如何将字节数组传递给blob(将相机图像存储到sqlite中)


如何

正确更改此byte[] photo = getBytes(imageBitmap);以存储在数据库 Blob 中?

if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
            Bundle extras = data.getExtras();
            Bitmap imageBitmap = (Bitmap) extras.get("data");
            //ImageView imageview = findViewById(R.id.imageView);
            //imageview.setImageBitmap(imageBitmap);
            //Bitmap to bytes for database
            byte[] photo = getBytes(imageBitmap);
            Bitmap bmp = BitmapFactory.decodeByteArray(photo, 0, photo.length);
            ImageView image = (ImageView) findViewById(R.id.imageView);
            image.setImageBitmap(Bitmap.createScaledBitmap(bmp, image.getWidth(), image.getHeight(), false));

           // DatabaseHandler mydb = new DatabaseHandler(getApplicationContext());
           // Walk walk = new Walk(photo);
          //  mydb.addWalk(walk);
}

您是否尝试过使用 ByteArrayOutputStream?您可以在文档 https://developer.android.com/reference/java/io/ByteArrayOutputStream.html

查看

或者为了方便起见,你可以像这家伙那样做将 Java 位图转换为字节数组

'

Bitmap bmp = intent.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
bmp.recycle();

'

首先,确切的问题是什么?保存图像还是将其存储到数据库中?

创建表 T1(ID 整数主键、数据 BLOB(;

归结为:

InputStream is = context.getResources().open(R.drawable.MyImageFile);
try {
    byte[] buffer = new byte[CHUNK_SIZE];
    int size = CHUNK_SIZE;
    while(size == CHUNK_SIZE) {
        size = is.read(buffer);  //read chunks from file
        if (size == -1) break;
        ContentValues cv = new ContentValues();
        cv.put(CHUNK, buffer);       //CHUNK blob type field of your table
        long rawId = database.insert(TABLE, null, cv); //TABLE table name
    }
} catch (Exception e) {
    Log.e(TAG, "Error saving raw image to: "+rawId, e);
}

最新更新