【问题标题】:Android Camera Preview Image Captured StretchesAndroid 相机预览图像捕获的拉伸
【发布时间】:2016-01-24 22:00:35
【问题描述】:

我有一个使用相机 API 而非 camera2 的应用程序,它运行良好。这是我正在做的 (1) 您使用相机 API 使用 takePicture(null, null, mPictureCallback) 方法拍摄照片。 (2) byte[] 数据数组在回调中转换成Bitmap,放到屏幕上

我在相机参数中设置了图片大小和预览大小。我希望有类似于 Snapchat 的东西。您在哪里拍照,它可以缩放到每个屏幕,而不会失真或裁剪。这怎么可能?

【问题讨论】:

  • 理论上似乎不可能在不失真和裁剪到每个屏幕的情况下适应相同的图像。以 1440 x 1440 像素的 Blackberry Passport 和 800 x 480 像素的 Galaxy S 为例。

标签: java android image camera preview


【解决方案1】:

您可能在保存之前旋转图像的矩阵。这就是它拉伸图像的原因,不要旋转矩阵,只需在 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);
    }

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

MediaStore.Images.ImageColumns.ORIENTATION

最后我遇到了类似的问题,但不是保存的图像,而是相机预览,当我没有重置相机会话时出现问题,因此缓冲区的大小不同。查看帖子,也许它会帮助您解决解决方案或调整图像大小的代码。

Camera PreviewView is stretched in some Android devices

【讨论】:

    猜你喜欢
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2021-01-20
    • 1970-01-01
    相关资源
    最近更新 更多