checkAndRotateImage static method
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;
}