所以我正在为葡萄酒制作一个列表应用程序,您可以在其中输入详细信息和您输入的葡萄酒图像,并将数据放入手机上的SQLite数据库中。
我刚刚将图像输入到数据库中,但它的质量非常低,即使我将质量整数设置为95(满分100)。
任何人都可以提供一些更好的方法吗?
以下是AddActivity的相关信息:
btnAddPicture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, 1888);
}
});
//this method happens after taking the image
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if (requestCode == 1888 && resultCode == RESULT_OK){
toastMessage("Image has been taken successfully");
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 95, stream);
imageInByte = stream.toByteArray();
}
}
然后我将imageInByte变量放入数据库中。
答案 0 :(得分:0)
图像质量如此之低的原因在于它实际上是获得图片的缩略图版本。
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
这不会检索完整图像。如果需要完整图像,则需要使用额外的EXTRA_OUTPUT来保存完整图像。然后,您可以将文件路径放入数据库以检索完整大小的图像。
有关ACTION_IMAGE_CAPTURE的文档: https://developer.android.com/reference/android/provider/MediaStore.html#ACTION_IMAGE_CAPTURE
希望这有助于其他任何人!