resizeImageIfNeeded function

Uint8List resizeImageIfNeeded(
  1. Uint8List imageData, {
  2. double scale = 0.5,
  3. int quality = 85,
})

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;
}