IOS Swift Kingfisher调整处理器结果图像模糊

5
我正在使用Kingfisher库开发一个应用程序,以从URL加载图像并在CollectionViewCell中显示。我试图调整图像大小以适应CollectionViewCell的Contentview。
我尝试了库中的ResizeProcessor和ScaleFactor,但结果图像似乎模糊。我的实现如下(函数在CellForRowAtIndexPath中调用):
let url = photo.flickrImageURL("m")
        let size = contentView.frame.size
        print("size is \(size.debugDescription)")
        let resizeProcessor = ResizingImageProcessor(referenceSize: size, mode: .aspectFit)
        self.flickrPhoto.kf.setImage(with: url, options: [.backgroundDecode,.processor(resizeProcessor), .scaleFactor(UIScreen.main.scale),.cacheOriginalImage])

我做错了什么吗?图像的质量看起来很模糊。

1个回答

6

您应该将 referenceSize 设置为 imageView 的尺寸,而不是 contentView 的尺寸。因为您的 contentView 的尺寸会比您的 imageView 大。

使用以下代码更改您的代码:

let size = self.flickrPhoto.frame.size

更新

刚刚发现 ResizingImageProcessor 工作在像素级别而非点数级别,所以您需要将比例乘以图像大小,如下所示:

let resizingProcessor = ResizingImageProcessor(referenceSize: CGSize(width: self.flickrPhoto.frame.size.width * UIScreen.main.scale, height: self.flickrPhoto.frame.size.height * UIScreen.main.scale))

谢谢,我已经更改了大小,但似乎结果图像仍然模糊,即使直接尝试“self.flickrPhoto.kf.setImage(with:url!)”。这可能是因为库本身的原因。 - Lê Khánh Vinh
谢谢,让我检查一下结果图。选项数组中的.scaleFactor会有什么不同吗? - Lê Khánh Vinh
谢谢。看起来质量有所提高。选项中的.scaleFactor会有什么影响吗? - Lê Khánh Vinh
实际上,.scaleFactor 应该与我们所做的类似。它可能会在 Kingfisher 中出现问题。 - iVarun
感谢。有没有办法检查我们调整大小后的图像与原始图像的质量和尺寸是否相同? - Lê Khánh Vinh
你可以在预览应用程序中通过在MacOS上保存原始图像和调整大小后的图像来完成这个操作。您将在“工具>调整大小”中获得多个选项。 - iVarun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接