Uri 에서 Bitmap 파일 생성하는 방법 # getBitmap ImageDecoder
오늘은 Uri를 가지고 Bitmap 파일을 만드는 방법에 대해서 정리해 보도록 하겠습니다.
1. 필요한 API
1-1. ImageDecoder 와 ContentResolver
API28부터 지원되기는 하지만,
파일을 Drawable 또는 Bitmap으로 전환시켜줍니다.
정말 다양한 소스로부터 Bitmap객체를 만들어주도록 도와주는데요.
마침 이 API가 uri소스로부터 Bitmap 객체를 만들어주는 createSoruce함수도 제공해주고 있습니다.
광고
ImageDecoder에는 첫번째 인자로 ContentResolver객체를 필요로 하는데요.
ContentResolver는,
Uri를 이용해서,
ContentProvider로부터 데이터의 CRUD(create, retrieve, update, and delete)를 할 수 있게 해주는 API입니다.
이 API를 사용할 때 주의해야 할 점은,
ImageDecoder는 API28 (Android9) 부터 지원하는 것이니 만큼 이하버전에서는 다른 API를 사용해 주어야 합니다.
여기에는 포함되지 않는 휴대폰이 상당히 많기 때문에, 언젠가는 Compat이라는 API명을 달고 하위호환 API가 추가되지 않을까 기대해 봅니다.
1-2. MediaStore.Images.Media.getBitmap
MediaStore클래스는 API1시절부터 나온 고전 API인데요.
Audio, Video, Images같은 미디어에 접근할 수 있도록 해 줍니다.
MediaStore.Images.Media()의 getBitmap()함수를 이용하면,
uri로부터 이미지를 로딩해서 Bitmap객체를 얻어올 수 있습니다.
첫번째 인자에는 ImageDecoder와 마찬가지로, ContentResolver객체를 필요로 합니다.
2. 구현
구현 코드는 아래와 같이 간단한데요.
API28 이상의 코드에서는 ImageDecoder로 미만에서는 getBitmap 함수를 사용하면,
쉽게 uri로부터 Bitmap객체를 얻어올 수 있게 됩니다.
이상으로 uri에서 Bitmap객체를 생성하는 방법에 대해서 정리해 보았습니다.