applyRotationFix method

Future<File> applyRotationFix(
  1. String originalPath
)

Implementation

Future<File> applyRotationFix(String originalPath) async {
  final originalFile = File(originalPath);
  img.Image? fixedImage;

  try {
    Map<String, IfdTag> data = await readExifFromFile(File(originalPath));
    print(data);

    int length = int.parse(data['EXIF ExifImageLength'].toString());
    int width = int.parse(data['EXIF ExifImageWidth'].toString());
    String orientation = data['Image Orientation'].toString();
    print("sini ya ${orientation} $length $width");
    if (length != null && width != null && orientation != null) {
      if (length > width) {
        if (orientation.contains('Rotated 90 CW')) {
          img.Image? original =
          img.decodeImage(File(originalPath).readAsBytesSync());

          fixedImage = img.copyRotate(
            original!,
            angle: -90,
          );
        } else if (orientation.contains('Rotated 180 CW')) {
          img.Image? original =
          img.decodeImage(File(originalPath).readAsBytesSync());

          fixedImage = img.copyRotate(
            original!,
            angle: -180,
          );
        } else if (orientation.contains('Rotated 270 CW')) {
          img.Image? original =
          img.decodeImage(File(originalPath).readAsBytesSync());
          fixedImage = img.copyRotate(
            original!,
            angle: -270,
          );
        }
      }
    }
    originalFile.writeAsBytesSync(img.encodeJpg(fixedImage!));
    return originalFile;
  } catch (e) {
    print(e.toString());

    return originalFile;
  }
}