这几天在做安卓图片的处理,偶然发现在测试三星手机的时候存在一个小bug。就是调用手机拍摄图片后,照片保存时自动旋转了90度。 测试其他机型并不存在这样的问题,只有三星机子有这样的bug。
网上有很多类似的解决方案,大多都是先获取照片原来的角度,然后在进行旋转恢复正确的角度。
我发现了一个另类的解决方法,其实很简单:只要把拍摄的照片改成jpg格式就自动解决了。之前一直困扰在这个问题上,因为项目中把照片制定成了png的格式,造成了存储的误差。
具体存储代码如下:
private void startCamera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, this.getCameraTempFile());
intent.putExtra("return-data", false);
startActivityForResult(intent, Constants.REQUEST_GETIMAGE_BYCAMERA);
}
// 拍照保存的绝对路
private Uri getCameraTempFile() {
String timeStamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
// 照片命名
String cropFileName = "osc_camera_" + timeStamp + ".jpg"; //这里设置后缀名
// 裁剪头像的绝对路
portraitFilePath = PHOTO_PATH + "/" + cropFileName;
portraitFile = new File(portraitFilePath);
fileUri = Uri.fromFile(portraitFile);
return this.fileUri;
}