当前位置: 首页 > 知识库问答 >
问题:

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

公德明
2023-03-14

我已经开发了一个应用程序来拍摄一张照片并保存在画廊里。我在网上搜索过,我能练习的最简单的方法就是使用数据。getExtras()。获取(“数据”)。下面是从相机上拍照的代码。注意,我在这个类中使用的是fragment。

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());

        }

它可以将图像保存到文件夹/图库中......但是图像质量很低...我几乎看不到图像中的文本。

他们说数据。getExtras()。获取(“数据”)应该返回缩略图,而不是实际图像。我想在这里得到的是完整的图像,而不是缩略图。

任何答复都将不胜感激。

共有1个答案

后阳炎
2023-03-14

来自:Android-如何使用意向数据获取图像

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); 
}
 类似资料:
  • 我有一个问题。当我试图从相机上拍照时,质量很低。首先,使用摄像头捕捉图片,然后保存到目录中,同时获取图片并显示在我的应用程序中。保存在目录中的图片质量很好,但当我从目录中获取时,质量很低。下面是我的示例代码: 任何解决方案/建议?谢谢:) 解决了的 当我遵循下面Antrromet给出的代码时,问题解决了

  • 我正在尝试使用摄像头将图像上传到firebase。但是,我得到的图像质量太低(不可读)。我已经编写了以下代码(没有编译错误)。但是,我不明白为什么它不能产生一个可读的图像。 我尝试过改变位图的质量参数。压缩,但图像质量保持不变。但同样的压缩代码适用于来自gallery的图像。

  • 我正在使用画布来修改我的图像。但是,我有一个问题。如果我使用options.inSamplesize=4;图像变得太小,质量下降。但是,如果我不给,它会从内存溢出并给出一个错误。 //位图缩放位图=位图。创建位图(原始1、0、0、宽度、高度、矩阵、真); 这是我当前的错误日志。 11-09 03:21:56.849 12345-12345/com.example.chkee.appfrontE/A

  • 我有以下代码,它要求用户从照片应用程序中选择一个图像或通过相机应用程序捕捉一个图像: 和OnActivityResult的代码:

  • 问题内容: 我正在通过以下代码拍摄照片并将其保存到SD卡中,但是它产生的照片质量如此之低,即使100%的质量也是如此。也许bitmap.compress不是正确的方法(或根本不是位图?!) 这是我的代码: 问题答案: 请调用以下功能从相机捕获图像。 您可以在selectedImageUri变量中获取图像Uri。(图像存储在SD卡中)

  • 我已经被困在相机里6天了,但没有得到任何适当的解决方案。当我通过相机意图捕获图像时,图像正在旋转。我试图修复方向,但有时它没有在onActivityResult()中给出位图值。当我尝试在ImageView中设置图像时,它会显示一个黑色屏幕。这是我的密码请帮帮我- 我得到的图像在横向模式,但不是在potrait模式。相机预览在拍摄图像后自动旋转90度。