结论:实时预览通过 View 层旋转为正向,但 TextureView.getBitmap()
返回的原始纹理不包含旋转和镜像,导致右侧照片、保存文件和上传头像横倒。本次在生成
mCurrentBitmap 时补齐预览实际变换。
左侧实时预览经过方向校正后可以正常显示;点击“拍照”后,右侧照片横倒 90 度,并因横图放入竖向
centerCrop 容器而发生二次裁切。保存和上传文件也保持错误方向。
YF_029E 的 Camera 0 实际预览帧为 640x480,方向为 90 度。CameraPreviewManager 使用 TextureView.setRotation(90) 校正实时预览。FaceStudyPop 原来直接读取 TextureView Bitmap,该结果不包含 View 旋转和父容器镜像。320x240;正确校正后应为 240x320。FaceStudyPop.java。captureDisplayedBitmap() 获取 TextureView 原始 Bitmap。getRotation(),兼容 Camera1、K203 Camera2 和高级设置方向。getRotationY(),在 180 度时执行水平镜像。mCurrentBitmap。| 环节 | 修复前 | 修复后 |
|---|---|---|
| TextureView 截图 | 320x240 横图 | 先读取原始图 |
| 最终 Bitmap | 320x240 横倒 | 240x320 正向 |
| 保存与上传 | 错误方向 | 与实时预览一致 |
| 镜像 | 未进入文件 | 与实时预览一致 |
只旋转 ImageView 只能修正界面显示,保存和上传文件仍然横倒。本方案在数据源
mCurrentBitmap 上修正,确保显示、保存和上传一致。
git diff --check,无空白错误。BUILD SUCCESSFUL in 1m 6s。53cf14f8aecbb2a241a8a89e12389ca96e1c970a57bb3745cdca4ec0dfead706。adb install -r 返回 Success。320x240 变为 240x320,人物方向正常。