如何使用java将相机点击图片存储在Android sqlite数据库中

Posted

技术标签:

【中文标题】如何使用java将相机点击图片存储在Android sqlite数据库中【英文标题】:how to store camera click picture in Android sqlite database using java 【发布时间】:2021-08-21 08:34:21 【问题描述】:

如何在 SQLite 数据库中存储相机点击图片?

@Override
protected void onActivityResult(int requestCode, int resultCode,  Intent data) 
    //super n0m .onActivityResult(requestCode, resultCode, data);
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CAMERA_REQUEST && resultCode== AppCompatActivity.RESULT_OK) 
        Bitmap bitmap = (Bitmap) data.getExtras().get("data");
        imageView.setImageBitmap(bitmap);


        //theImage = (Bitmap) data.getExtras().get("data");

        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
        byte[] byteArray = stream.toByteArray();

        long t=handler.insertImage(byteArray);


        if (t > 0) 
            Toast.makeText(Camera.this,"sucess image",Toast.LENGTH_LONG).show();

        
        else 
            Toast.makeText(Camera.this,"fail image",Toast.LENGTH_LONG).show();
        

       // Intent intent = new Intent(Camera.this, Voice.class);

        //startActivity(intent);
    

【问题讨论】:

我建议您存储图像的路径而不是存储图像本身。 【参考方案1】:

如果您想将图像保存在设备应用程序的数据库中,SQlite 支持 blob。 但我们的想法是不要广泛使用本地数据库来存储图像,而是可以将图像保存在外部存储中,然后将路径保存在 sqlite 数据库中,这样会更有意义和高效。

【讨论】:

【参考方案2】:

您可以通过将图像转换为字节数组来保存图像。

我有 2 个编辑文本字段,所以请忽略它们

save.setOnClickListener(v -> 
            byte[] img = convert_imaveView_ByteArray(imageView);
            db_class = new DatabaseClass(MainActivity.this);
            if (db_class.save(1,et_name.getText().toString(),et_email.getText().toString(),img))
                Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT).show();
            else Toast.makeText(getApplicationContext(), "Failed", Toast.LENGTH_SHORT).show();
            db_class.save(1,et_name.getText().toString(),et_email.getText().toString(),img);
        );

在你的数据库类中使用这个方法

 public boolean save(int id, String name, String email,byte [] img)
        try

            ContentValues cv = new ContentValues();
            cv.put("id",id);
            cv.put("name",name);
            cv.put("email",email);
            cv.put("img",img);

            SQLiteDatabase db = this.getWritableDatabase();
            db.insert(TableName,null,cv);
            return true;

        catch (Exception e)
            e.printStackTrace();
            return false;
        
    

【讨论】:

以上是关于如何使用java将相机点击图片存储在Android sqlite数据库中的主要内容,如果未能解决你的问题,请参考以下文章

Android图片添加竖排文字水印

android写一个图片选择

用相机拍照并获取图片路径android

如何在 SurfaceView Android 上制作裁剪相机视图

Android 实现拍照功能,并将图片保存到本地存储

Android:如何查询存储桶名称列表