Android相机预览图像捕捉拉伸

时间:2016-01-24 22:00:36

标签: java android image camera preview

我有一个使用相机API的应用程序,而不是camera2,它运行良好。这就是我在做的事情 (1)使用takePicture(null,null,mPictureCallback)方法使用相机API捕获照片。 (2)byte []数据数组被转换为Bitmap并在回调中放在屏幕上

我在相机参数中设置了图片尺寸和预览尺寸。我希望有类似于Snapchat的东西。拍摄照片时,它会缩放到每个屏幕而不会出现扭曲或裁剪。这怎么可能?

1 个答案:

答案 0 :(得分:0)

在保存之前,您可能正在旋转图像矩阵。这就是图像拉伸的原因,不要旋转矩阵,只需在ExifInterface中保存正确的方向值。 尝试使用这样的图像:

ExifInterface exif=new ExifInterface(pictureFile.toString());

    Log.d("EXIF value", exif.getAttribute(ExifInterface.TAG_ORIENTATION));
    if(exif.getAttribute(ExifInterface.TAG_ORIENTATION).equalsIgnoreCase("6")){
        realImage= rotate(realImage, 90);
    } else if(exif.getAttribute(ExifInterface.TAG_ORIENTATION).equalsIgnoreCase("8")){
        realImage= rotate(realImage, 270);
    } else if(exif.getAttribute(ExifInterface.TAG_ORIENTATION).equalsIgnoreCase("3")){
        realImage= rotate(realImage, 180);
    } else if(exif.getAttribute(ExifInterface.TAG_ORIENTATION).equalsIgnoreCase("0")){
        realImage= rotate(realImage, 45);
    }

其他方式是您的Byte数组已经以错误的Orientation保存,在这种情况下,您必须转到代码并检查在创建ContentBuilder时使用的参数,请检查MediaService参数:

MediaStore.Images.ImageColumns.ORIENTATION

最后我有一个类似的问题,但没有保存的图像,它与相机预览,问题出现时,我没有重置我的相机会话,所以缓冲区有不同的大小。检查帖子,也许它会帮助您解决方案或代码来调整图像大小。

Camera PreviewView is streched in some android devices

祝你好运!