从相机捕获图像返回低质量图像

时间:2018-05-16 09:18:30

标签: android

我已经开发了应用程序来拍照保存在图库中。我在网上搜索过,最简单的方法是使用data.getExtras().get("data")。以下是从相机拍照的代码。请注意,我正在使用此类中的片段。

img22a1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent,CAMERA_01);
        }
    });

获取捕获的图像并将其转换为字符串

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CAMERA_01) {
        if (resultCode == Activity.RESULT_OK) {
            Bitmap bitmap = (Bitmap) data.getExtras().get("data");
            ByteArrayOutputStream output = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output);
            byte[] byte_arr = output.toByteArray();
            ((SiteProgress) getActivity().getApplication()).seti22a1(Base64.encodeToString(byte_arr, Base64.DEFAULT));
            BitmapDrawable ob = new BitmapDrawable(getResources(), bitmap);
            img22a1.setBackgroundDrawable(ob);
        } else if (resultCode == Activity.RESULT_CANCELED) {
        }
    }
}

我将字符串保存到全局变量中,以便另一个活动可以访问它。 在另一个活动中,我有一个按钮,通过访问图像字符串将图像保存到文件夹/库中。

for(int i=0;i<=namefile.length;i++){
            Bitmap[] bitmap = new Bitmap[namefile.length];
            FileOutputStream outputStream = new FileOutputStream(String.valueOf(namefile[i]));
            bitmap[i] = BitmapFactory.decodeByteArray(decodedString[i],0,decodedString[i].length);
            bitmap[i].compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
            outputStream.close();

            MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), namefile[i].getAbsolutePath(), namefile[i].getName(), namefile[i].getName());

        }

它将图像保存到文件夹/图库中....但图像的质量非常低......我几乎看不到图像中的文字。

他们说data.getExtras().get("data")应该返回缩略图而不是实际图像。我想要的是获得完整的图像,而不是缩略图。

任何答案都将非常感谢。

1 个答案:

答案 0 :(得分:1)

来自:Android - How to get the image using Intent data

if(data != null)
{           
        Uri selectedImageUri = data.getData();
        filestring = selectedImageUri.getPath();

        Bitmap thumbnail = BitmapFactory.decodeFile(filestring, options2);

        System.out.println(String.format("Bitmap(CAMERA_IMAGES_REQUEST): %s", thumbnail));
        System.out.println(String.format("cap_image(CAMERA_IMAGES_REQUEST): %s", cap_image));
        cap_image.setImageBitmap(thumbnail); 
}