java - 当我使用 Camera2Api 拍照时,Android 图像被旋转
问题描述
有谁知道主流手机的各种旋转角度。每次我拍照时,它总是在不同的移动设备上以不同的角度旋转它。
解决方案
大多数手机相机都是横向的,这意味着如果您以纵向拍摄照片,生成的照片将旋转 90 度。在这种情况下,相机软件应使用查看照片的方向填充 Exif 数据。虽然这不是 100% 可靠,因为它取决于填充退出数据的相机软件
ExifInterface ei = new ExifInterface(photoPath);
int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_UNDEFINED);
Bitmap rotatedBitmap = null;
switch(orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
rotatedBitmap = rotateImage(bitmap, 90);
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotatedBitmap = rotateImage(bitmap, 180);
break;
case ExifInterface.ORIENTATION_ROTATE_270:
rotatedBitmap = rotateImage(bitmap, 270);
break;
case ExifInterface.ORIENTATION_NORMAL:
default:
rotatedBitmap = bitmap;
}
旋转图像的方法
public static Bitmap rotateImage(Bitmap source, float angle) {
Matrix matrix = new Matrix();
matrix.postRotate(angle);
return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(),
matrix, true);
}
推荐阅读
- airflow - Airflow DAG:任务后分支
- javascript - 如何从 JavaScript 中的 Date() 获取日期字符串
- javascript - 如何将目录从 NodeJs 推送到 Git (GitHub)
- flutter - 如何从 SharedPreferences 中检索数据并将其存储在 const 中?
- javascript - 调用生成 Avatar 的 API 返回 4 个字节数组
- angular - 如何从 mockStore.overrideSelector() 重新分配值?
- python - 在给定数值约束的情况下获取数组索引的广义函数
- swiftui - 地理位置问题 可选
- amazon-web-services - 使用 Docker 和 AWS 将多个服务部署到子域
- javascript - 服务器响应 403