Bitmapを扱う
通信でイメージファイル(Bitmap)を取得する
BitmapFactory.decodeStream
を使えばURLからイメージファイルを取得できる。
ただし、以下に注意が必要。
1. AndroidManifest.xml
に権限(android.permission.INTERNET
)を追加する
インターネット通信によりイメージファイルを取得するため、権限の追加が必要。
AndroidManifest.xml
に<uses-permission android:name="android.permission.INTERNET" />
を追加する。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" />
...
<application
...>
</application>
</manifest>
2. メインスレッド以外での処理を実行する
通信により画像を取得しているため、メインスレッド以外での実行が必要。
Thread
などを利用して、メインスレッドで通信処理を行わないよう制御する。
Thread {
val imageUrl = /** pngファイルなどのURL */
val bitmap = URL(imageUrl).openStream().use {
BitmapFactory.decodeStream(it)
}
}.start()
Bitmapをローカルに保存する
Bitmap.compress
を使う。
val bitmap : Bitmap? = /** どこかから生成・取得したBitmapファイル **/
val file = File(requireContext().filesDir, fileName)
val fileOutputStream = FileOutputStream(file)
bitmap?.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream)
参考
最終更新: 2025.7.30