5

这是我用来设置用户图像的代码,它非常适合实际获取和设置图像。我得到了图片的白色轮廓。知道如何使它透明吗?

let processor = RoundCornerImageProcessor(cornerRadius: 50)
self.userPhoto.backgroundColor = Colors.accent
self.userPhoto.kf.setImage(with: url, placeholder: UIImage(named: "ic_camera_alt_48pt"), options: [.processor(processor)])

以 50 为例 在此处输入图像描述

4

2 回答 2

4

原始图像的格式不支持透明度(即JPEG)。在缓存之前,您必须将图像转换为可以执行的图像(即 PNG)。

来自翠鸟备忘单

默认情况下(DefaultCacheSerializer),Kingfisher 将尊重输入图像格式并尝试保持其不变。但是,也有一些例外。一个常见的情况是,当您使用 RoundCornerImageProcessor 时,您可能总是需要 alpha 通道。如果您的原始图像是 jpg,您可能需要设置 png 序列化程序:

let roundCorner = RoundCornerImageProcessor(cornerRadius: 20)
imageView.kf.setImage(with: url, 
    options: [.processor(roundCorner), 
              .cacheSerializer(FormatIndicatedCacheSerializer.png)]
)
于 2018-02-01T20:43:51.543 回答
2

你不需要RoundCornerImageProcessor

self.userPhoto.layerCornerRadius = 50
self.userPhoto.clipsToBounds = true
self.userPhoto.backgroundColor = Colors.accent
self.userPhoto.kf.setImage(with: url, placeholder: UIImage(named: "ic_camera_alt_48pt"))
于 2017-08-04T17:02:10.390 回答