resizeImageIfNeeded function
Implementation
Uint8List resizeImageIfNeeded(Uint8List imageData,
{double scale = 0.5, int quality = 85}) {
// 2MB를 바이트 단위로 변환
const int maxSizeBytes = 2 * 1024 * 1024;
// 이미지 데이터가 2MB를 초과하는지 확인
while (imageData.length > maxSizeBytes) {
// imageData로부터 img.Image 객체 생성
img.Image? image = img.decodeImage(imageData);
if (image == null) throw Exception('이미지를 디코딩하는데 실패했습니다.');
// 이미지를 일정 비율로 축소
img.Image resizedImage =
img.copyResize(image, width: (image.width * scale).round());
// 축소된 이미지를 다시 Uint8List로 변환
imageData =
Uint8List.fromList(img.encodeJpg(resizedImage, quality: quality));
}
return imageData;
}