본문 바로가기

# 02/Flutter

[Flutter] Image File Size ?????

반응형

flutter 에서 앨범 이미지 또는 비디오를 불러올 때 용량을 알고 싶은 경우!

 

https://pub.dev/packages/photo_manager

 

photo_manager | Flutter Package

A Flutter plugin that provides assets abstraction management APIs on Android, iOS, and macOS.

pub.dev

보통 위의 라이브러리로 앨범 리스트를 불러오면,

 

AssetPathEntity

 

해당 클래스 객체로 가져오게 되고,

 

 

AssetEntity photo
final File? file = await photo.file;
byte = (await file?.length() ?? 0) / (1024 * 1024);

 

위의 코드로 이미지 file 용량 mb 단위를 알 수 있다.

(보통 구글에 검색하면 위의 코드 나오는 듯!)

 

 

하지만, 

 

iOS 에서는 대용량 파일을 불러오는 경우!

 

final File? file = await photo.file;

 

여기서 앱 crash 가 난다..

 

 

따라서 ios 인 경우 에는,

 

byte = ((await photo.originBytes)?.length ?? 0) / (1000 * 1000);

 

이렇게 해주었다. (iOS 인경우 byte 타입이 10진법이라고! 그래서 1000으로 맞춰줬다.)

 

그럼 위의걸로 안드로이드도 해주면 된다고 생각 할 수 있지만 

 

용량이 큰 경우 안드로이드에서 crash 가 난다...

 

 

 

따라서 결론,

 

double byte = 0;
if (Platform.isAndroid) {
  final File? file = await photo.file;
  byte = (await file?.length() ?? 0) / (1024 * 1024);
} else {
  byte = ((await photo.originBytes)?.length ?? 0) / (1000 * 1000);
}

 

이렇게 해주면

 

큰 용량 파일인 경우 app crash 없이 사이즈 값을 알 수있다.(mb 단위 입니다.)

반응형