Android:无法获取相机拍摄的原始照片(只能读取压缩照片)

Vin*_*ash 2 android photo android-camera android-camera-intent

在我的应用程序中,我通过Android摄像头捕获照片,然后我想将其发送到服务器.为此我使用Client Socket编程.我将捕获照片转换为bytearray(byte []),然后将其发送到服务器.每件事都在事实上发挥作用.

问题在那里我无法将原始照片发送到服务器.缩略图照片由Android手机发送.但是当我通过相机捕捉照片时,原始照片就在画廊中.

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

我的代码:

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);
Run Code Online (Sandbox Code Playgroud)

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


    }
}
Run Code Online (Sandbox Code Playgroud)

bitmapdata照片是有,但压缩的照片不是原始的.有人说,改变压缩质量领域(CompressFormat.JPEG,100,bos); 在0到100之间,但什么都不会发生.

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

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

- >>或者在我当前的代码中有一些更改需要它会正常工作吗?

Dha*_*dra 6

您正在使用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);
Run Code Online (Sandbox Code Playgroud)

这里有一个MediaStore.EXTRA_OUTPUT参数,它采用您希望相机写入图像的文件的Uri.

有关更多信息,请参阅下面的示例

从相机捕获全分辨率图像