我使用的是@Composable
,需要通过参数传递ImageBitmap
,问题是,我从服务器获取图像时需要给定一个url,因此我需要加载这些图像,将其转换为Bitmap
,然后再转换为ImageBitmap
,但我遇到了麻烦,因为我不知道如何将其转换为ImageBitmap
,这是我的@Composable
@ExperimentalComposeUiApi
@Composable
fun MyCanvas(
myImage: ImageBitmap,
modifier: Modifier = Modifier,
) {
Canvas(modifier = modifier
.size(220.dp)
.clipToBounds()
.clip(RoundedCornerShape(size = 16.dp)) {
...
val canvasWidth = size.width.toInt()
val canvasHeight = size.height.toInt()
val imageSize = IntSize(width = canvasWidth, height = canvasHeight)
drawImage(
image = myImage, dstSize = imageSize
)
...
}
}
因此,当我调用这个@Composable
时,我需要加载图像,但不知道如何开始,我需要知道使用Glide或Coil哪个更好。
2条答案
按热度按时间noj0wjuj1#
您不需要ImageBitmap就可以将其绘制到Canvas中您可以在DrawScope中绘制绘图器您甚至不需要Canvas函数
androidx.compose.foundation.Canvas
就是带有Modifier.drawBehind
Spacer您问题答案是
当您应用Modifier.clip()时,您不必应用Modifier.clipToBounds()
这两种方法是相同的,clip使用额外的形状来clipToBounds
lf5gs5x22#
很明显,瑟瑞斯博士提供了一个最佳的解决方案,这是他从他几个世纪的治疗病态代码的经验中提取出来的。你可以接受。但是,从你在问题中提供的描述来看,看起来你所需要的只是一种将
Bitmap
转换为ImageBitmap
对象的方法。这是一个非常方便的asImageBitmap()
扩展函数,现在可以和位图一起使用了。就Glide和Coil而言,两者都有流行的API方法,我认为它们达到了类似的目标/性能。现在,就我所记得的,Coil是第一个迁移到Compose的。我只使用Coil,因为我需要从URL中获取图像,并希望简单地显示它,所以Coil为此提供了一个非常直接的API。
rememberCoilPainter()
,它的工作原理类似于重力。我还没有真正使用过另一个,只是在谷歌上搜索一下两者的比较。它绝对是可用的,或者只是通过两者的文档来看看哪些方法是可用的,并在这样做的同时在你的脑海中设计你的代码结构;选择一个更容易实现的。这个网站通常不用于听取意见,所以我就把它留在那里。不错的技巧可能是-文档越好,API就越好。