【问题标题】:Android: Not able to get original photo captured by camera (Able to read compress photo only)Android:无法获取相机拍摄的原始照片(只能读取压缩照片)
【发布时间】:2012-06-02 12:48:52
【问题描述】:

在我的应用程序中,我通过 android 相机拍摄照片,然后我想将其发送到服务器。为此,我使用客户端套接字编程。我将捕获的照片转换为 bytearray(byte[]),然后将其发送到服务器。每件事实际上都有效。

问题是我无法将原始照片发送到服务器。缩略图照片由安卓手机发送。但是当我用相机拍摄照片时,原始照片会出现在图库中。

如何让这张原始照片在我的应用程序中使用?

我的代码:

Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        cameraIntent.putExtra("outputFormat",Bitmap.CompressFormat.JPEG);
        cameraIntent.putExtra("return-data", true);
    startActivityForResult(Intent.createChooser(cameraIntent, "Select Picture"),
                    CAMERA_REQUEST);

在 onActivityResult 方法中:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CAMERA_REQUEST) {
        Bitmap photo = (Bitmap) data.getExtras().get("data");
//          byte[] a = (byte[]) data.getExtras().getByteArray("data"); // I also use this but not work


        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        photo.compress(CompressFormat.JPEG, 100, bos);
        byte[] bitmapdata = bos.toByteArray();


    }
}

bitmapdata 中有照片,但压缩后的照片不是原始照片。 有人说,将 compress(CompressFormat.JPEG, 100, bos); 的质量字段更改在 0 到 100 之间,但不会发生任何事情。

-- >> 还有其他方法可以获取相机拍摄的原始照片

-- >> 当照片在我电脑的文件夹中时,我通过给出路径来读取文件中的这张照片。 ex- 文件文件 = 新文件(c:\newphoto\image.jpg);。我可以在 android 中使用此代码读取原始照片吗,因为我知道照片的名称和位置。如果是,那么在画廊中阅读照片的路径是什么。如果我将路径设为:\DCIM\Camera\photoName.jpg,这是否可行。

-- >> 或者我当前的代码需要一些改变,它会正常工作?

【问题讨论】:

    标签: android photo android-camera android-camera-intent


    【解决方案1】:

    您正在使用 Intent 通过ACTION_IMAGE_CAPTURE 捕获图像。如果您通常使用 Intent 启动相机,那么它会在 onActivityResult() 中以位图的形式返回图像,但这将用于缩略图目的。

    如果您想从摄像头获取全分辨率图像,那么您应该提供一个文件,其中包含您要启动摄像头活动的意图。

    你可以像下面那样做

    Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    File out = Environment.getExternalStorageDirectory();
    out = new File(out, imagename);
    i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));
    startActivityForResult(i, CAMERA_RESULT);
    

    这里有一个MediaStore.EXTRA_OUTPUT 参数,它获取您希望相机在其中写入图像的文件的 Uri。

    更多信息可以参考下面的例子

    Capture full resolution image from camera

    【讨论】:

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