오늘은 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객체를 생성하는 방법에 대해서 정리해 보았습니다.
'Android 개발 > File IO, FilesDir, Storage,' 카테고리의 다른 글
안드로이드 Cache 디렉토리 이용해 xml 화면 공유하기 (2) | 2024.12.10 |
---|---|
안드로이드 앱 내부 파일 확장자 체크 후 삭제하기 # delete filesDir (0) | 2023.04.14 |
Mp3파일 외부 저장소에서 가져와 재생하기 #안드로이드 (0) | 2019.09.07 |
Android 에서 File 저장하기 Part1. Internal Storage 편 (0) | 2017.01.08 |
댓글