본문 바로가기
Android 개발/File IO, FilesDir, Storage,

Uri 에서 Bitmap 파일 생성하는 방법 # getBitmap ImageDecoder

by Developer88 2022. 11. 17.
반응형

오늘은 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객체를 생성하는 방법에 대해서 정리해 보았습니다.

 

 

 

728x90

댓글