From ed3b27475e5f5a747e182017ccee1e1ce6b6cbd5 Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Tue, 3 Sep 2024 13:13:56 +0200 Subject: [PATCH] [mob][photos] Try converting any unsupported format on Android --- mobile/lib/utils/image_ml_util.dart | 35 +++++++++++++---------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/mobile/lib/utils/image_ml_util.dart b/mobile/lib/utils/image_ml_util.dart index f2224d2b4b..8c68bf9226 100644 --- a/mobile/lib/utils/image_ml_util.dart +++ b/mobile/lib/utils/image_ml_util.dart @@ -29,30 +29,25 @@ Future<(Image, ByteData)> decodeImageFromPath(String imagePath) async { return (image, imageByteData); } catch (e, s) { final format = imagePath.split('.').last; - if ((format == 'heic' || format == 'heif') && Platform.isAndroid) { - _logger.info('Cannot decode $format, converting to JPG format'); + if (Platform.isAndroid) { + _logger.info('Cannot decode $format, converting to JPG on Android'); final String? jpgPath = await HeifConverter.convert(imagePath, format: 'jpg'); - if (jpgPath == null) { - _logger.severe('Error converting $format to jpg:', e, s); - throw Exception( - 'InvalidImageFormatException: Error decoding image of format $format', - ); + if (jpgPath != null) { + final imageData = await File(jpgPath).readAsBytes(); + final image = await decodeImageFromData(imageData); + final ByteData imageByteData = await getByteDataFromImage(image); + return (image, imageByteData); } - final imageData = await File(jpgPath).readAsBytes(); - final image = await decodeImageFromData(imageData); - final ByteData imageByteData = await getByteDataFromImage(image); - return (image, imageByteData); - } else { - _logger.severe( - 'Error decoding image of format $format:', - e, - s, - ); - throw Exception( - 'InvalidImageFormatException: Error decoding image of format $format', - ); } + _logger.severe( + 'Error decoding image of format $format (Android: ${Platform.isAndroid})', + e, + s, + ); + throw Exception( + 'InvalidImageFormatException: Error decoding image of format $format', + ); } }