Android Coil 3 data加载图的Bitmap或ByteArray数据类型,Kotlin

Android Coil 3 data加载图的Bitmap或ByteArray数据类型,Kotlin

Kotlin 复制代码
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.os.Bundle
import android.util.Log
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import coil3.ImageLoader
import coil3.SingletonImageLoader
import coil3.imageLoader
import coil3.request.ErrorResult
import coil3.request.ImageRequest
import coil3.request.target
import coil3.size.Scale
import java.io.ByteArrayOutputStream


class MainActivity : AppCompatActivity() {
    companion object {
        const val TAG = "fly/MainActivity"
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        SingletonImageLoader.setSafe { ctx ->
            ImageLoader.Builder(ctx)
                .build()
        }

        setContentView(R.layout.activity_img)

        val imageView1 = findViewById<ImageView>(R.id.image1)
        val imageView2 = findViewById<ImageView>(R.id.image2)

        val bmp1 = BitmapFactory.decodeResource(this.resources, android.R.drawable.ic_menu_gallery)
        val req1 = ImageRequest.Builder(this)
            .data(bmp1) //直接加载Bitmap
            .scale(Scale.FIT)
            .listener(object : ImageRequest.Listener {
                override fun onError(request: ImageRequest, result: ErrorResult) {
                    Log.e(TAG, "onError ${request.data}")
                }
            })
            .target(imageView1)
            .build()
        imageLoader.enqueue(req1)


        val bmp2 = BitmapFactory.decodeResource(this.resources, android.R.drawable.ic_menu_gallery)
        val req2 = ImageRequest.Builder(this)
            .data(toByte(bmp2)) //加载的ByteArray盛放了Bitmap数据。
            .scale(Scale.FIT)
            .listener(object : ImageRequest.Listener {
                override fun onError(request: ImageRequest, result: ErrorResult) {
                    Log.e(TAG, "onError ${request.data}")
                }
            })
            .target(imageView2)
            .build()
        imageLoader.enqueue(req2)
    }

    fun toByte(bmp: Bitmap): ByteArray {
        val baos = ByteArrayOutputStream()
        bmp.compress(Bitmap.CompressFormat.PNG, 100, baos)
        return baos.toByteArray()
    }
}

Android ByteBuffer Bitmap byte[] convert,Kotlin_android 字节数组转bitmap-CSDN博客文章浏览阅读1.2k次。本文介绍了如何在Android中使用Kotlin将Drawable转换为Bitmap,以及Bitmap与byte[]数组之间的转换方法,包括使用`compress`和`decodeByteArray`函数。https://blog.csdn.net/zhangphil/article/details/132699647Android Coli 3 ImageView load two suit Bitmap thumb and formal,Kotlin(七)-CSDN博客文章浏览阅读572次,点赞4次,收藏6次。本文在之前的基础上,进一步优化了Android应用中Coil 3.2.0版本加载缩略图和正式图的实现。主要改进点在于,当正式图加载完成后,主动删除缓存中的缩略图,以节省内存资源。文章提供了相关的Kotlin代码示例,并指出尽管配置了磁盘缓存路径,但实际运行时缓存文件为空,表明磁盘缓存未生效。作者建议将缩略图和正图的内存缓存合并为单一缓存系统,以提升性能。此外,文章还列出了所需的权限声明和Coil库的依赖项,包括对GIF、视频和SVG格式的支持。更多细节可参考CSDN博客链接。https://blog.csdn.net/zhangphil/article/details/147983753Android Coil 3 Fetcher大批量Bitmap拼接成1张扁平宽图,Kotlin(2)_android fetcher-CSDN博客文章浏览阅读301次,点赞5次,收藏9次。遗留问题,配置的disk cache似乎没有work,指定的磁盘缓存文件路径生成是生成了,但是app跑起来运行后(图正常显示),里面是空的。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。_android fetcherhttps://blog.csdn.net/zhangphil/article/details/147114521