【问题标题】:Capture image from camera return low quality image从相机捕获图像返回低质量图像
【发布时间】:2018-05-17 10:31:15
【问题描述】:

我已经开发了一个应用程序来拍照以保存在画廊中。我在网上搜索过,我可以练习的最简单的方法是使用 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") 应该返回缩略图而不是实际图像。我想要的是获得完整的图像,而不是缩略图。

任何答案将不胜感激。

【问题讨论】:

标签: android


【解决方案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); 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    相关资源
    最近更新 更多