用kotlin代码实现,从ImageView获取其设置的图片,将转为ByteArray, 然后转成的ByteArray又怎么设置到ImageView?
时间: 2024-09-29 10:14:01 浏览: 53
Android-一个Kotlin实现的简单小巧支持圆形和圆角定制化的ImageView
在Kotlin中,你可以通过以下步骤从ImageView获取图片并将其转换为ByteArray,然后再设置回去:
1. 获取ImageView中的Bitmap:
```kotlin
val imageView = findViewById<ImageView>(R.id.imageView) // 假设id为imageView
val bitmap = imageView.drawable?.toBitmap() ?: return // 如果ImageView没有设置图片,则返回null
```
2. 将Bitmap转换为ByteArray:
```kotlin
val byteArr = BitmapUtils.bitmapToByteArray(bitmap) // 使用自定义函数或库方法将Bitmap转换为ByteArray
```
这里假设有个`BitmapUtils.bitmapToByteArray()`函数用于这个目的。如果你找不到现成的库,可以手动实现一个方法来压缩或序列化Bitmap。
3. 设置ByteArray回原ImageView:
```kotlin
// 首先创建一个新Drawable
val drawable = BitmapDrawable(context, bitmap)
// 或者如果想用位图流:
val inputStream = ByteArrayInputStream(byteArr)
val drawableFromStream = Drawable.createFromStream(inputStream, null)
// 现在设置新的Drawable到ImageView
imageView.setImageDrawable(drawable) // 或 imageView.drawable = drawableFromStream
```
注意:`BitmapDrawable`会持有Bitmap内存直到它不再需要,因此可能会消耗大量内存,除非你在适当的时候释放Bitmap。
阅读全文