如何解决相机抖动中照片的错误旋转?

问题描述 投票:0回答:1

我正在使用最新的相机插件版本拍照,并且正在使用flutter示例中的代码。这是我选择相机的方式:

final cameras = await availableCameras();
final firstCamera = cameras.first;

这在init内部:

_cameraController = CameraController(
  widget.camera,
  ResolutionPreset.medium,
  enableAudio: false,
);

这是相关代码的其余部分:

Future _takePhoto(BuildContext context) async {
  try {
    await _initializeControllerFuture;
    final path = join(
      (await getTemporaryDirectory()).path,
      '${DateTime.now()}.png',
    );

    await _cameraController.takePicture(path);

    setState(() {
      _imagePath = path;
    });
  } catch (e) {
    print(e);
  }
}

[之后,我用Image.file(File(_imagePath))向用户显示照片,然后将照片发送给API。问题是照片有时会以错误的方向拍摄。 (我对此很确定,因为照片也在数据库中旋转了。)例如,在3岁的小米手机上,它可以正常工作,但在某些新的三星手机上,照片始终在旋转。

如何确保旋转始终正确? (甚至在ios设备上)

flutter dart android-camera
1个回答
1
投票

您可以使用软件包https://pub.dev/packages/flutter_exif_rotation支持iOSAndroid在某些设备中,当exif数据实际为纵向时,它们会以横向模式显示图片。此插件可修复使用这些设备拍摄的照片的方向。

对于Android将此添加到您的AndroidManifest.xml中>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

代码段

image = await FlutterExifRotation.rotateImage(path: image.path);

//Note : iOS not implemented
image = await FlutterExifRotation.rotateAndSaveImage(path: image.path);
© www.soinside.com 2019 - 2024. All rights reserved.