我有一个使用相机API的应用程序,而不是camera2,它运行良好。这就是我在做的事情 (1)使用takePicture(null,null,mPictureCallback)方法使用相机API捕获照片。 (2)byte []数据数组被转换为Bitmap并在回调中放在屏幕上
我在相机参数中设置了图片尺寸和预览尺寸。我希望有类似于Snapchat的东西。拍摄照片时,它会缩放到每个屏幕而不会出现扭曲或裁剪。这怎么可能?
答案 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
祝你好运!