为什么将此图像保存到SQLite数据库中会降低质量?

时间:2017-10-01 04:26:20

标签: java android sqlite

所以我正在为葡萄酒制作一个列表应用程序,您可以在其中输入详细信息和您输入的葡萄酒图像,并将数据放入手机上的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变量放入数据库中。

1 个答案:

答案 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

希望这有助于其他任何人!