如何在 flutter 中检索 exif 方向值

How to retrieve the exif orientation value in flutter

我正在使用 Flutter 开发一个应用程序,我想检索我使用 image_picker 插件 select 编辑的图像的 exif 方向值。

当我 运行 下面的代码和 select 我事先旋转过的图像时,我得到的方向值为空,exif 数据为空地图。

File file = await ImagePicker.pickImage(
  source: ImageSource.gallery,
);
img.Image decodedImage = img.decodeImage(file.readAsBytesSync());
print("decodedImage.exif.orientation ${decodedImage.exif.orientation}"); // null
print("decodedImage.exif.data ${decodedImage.exif.data}"); // {}

我通过 google 驱动器将我与此代码一起使用的图像发送到我的 mac 书中以查看方向值,这就是我得到的:

我使用的是 image_picker 插件的最新可用版本。如何在 Flutter 中检索图像的 exif 方向值?

我用过这个功能:

  needRotation(String path) async {
    Map<String, IfdTag> data =
        await readExifFromBytes(await new File(path).readAsBytes());
    return data['EXIF ExifImageWidth'].values[0] >
        data['EXIF ExifImageLength'].values[0];
  }

使用import 'package:exif/exif.dart';

解释:给定图像的 path 如果需要旋转(即处于横向模式),它将 return

我也有你提到的 null orientation 问题,我用 width/height 自己解决了...

我知道这似乎很奇怪...希望有人能提供更好的解决方案。