如何使用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数据库中的主要内容,如果未能解决你的问题,请参考以下文章