checkAndRotateImage static method

FutureOr<File?> checkAndRotateImage(
  1. File beforeFile
)

Implementation

static FutureOr<File?>checkAndRotateImage(File beforeFile) async {

  await decodeImageFromList(beforeFile.readAsBytesSync()).then((decodedImage) async {
    bool isHorizontalImage = decodedImage.width > decodedImage.height;
    List<int> imageBytes = await beforeFile.readAsBytes();
    final exifData = await readExifFromBytes(imageBytes);

    if (isHorizontalImage){
      ImageLib.Image? contrast = ImageLib.decodeImage(beforeFile.readAsBytesSync());
      // contrast = ImageLib.copyRotate(contrast!, angle: 90);

      print('exif data ${exifData}');
      if (exifData.length != 0){
        if (exifData['Image Orientation']!.printable.contains('Horizontal')) {
          contrast = ImageLib.copyRotate(contrast!, angle: 90);
        } else if (exifData['Image Orientation']!.printable.contains('180')) {
          contrast = ImageLib.copyRotate(contrast!, angle: -90);
        } else if (exifData['Image Orientation']!.printable.contains('CCW')) {
          contrast = ImageLib.copyRotate(contrast!, angle: 180);
        } else {
          contrast = ImageLib.copyRotate(contrast!, angle: 0);
        }
      }else{
        print('here gak ?');
        contrast = ImageLib.copyRotate(contrast!, angle: 90);
      }

      beforeFile.writeAsBytesSync(ImageLib.encodeJpg(contrast));
    }
    print("before image ishorizontal ? ${isHorizontalImage} ${beforeFile}");
    return beforeFile;
  });
  return null;

}