IOS Swift Kingfisher Resize 处理器结果图像模糊
IOS Swift Kingfisher Resize processor result blurry image
我正在开发一个应用程序,使用 Kingfisher 库从 ulr 加载图像并在 CollectionViewCell
中显示。我正在尝试调整图像大小以适应 CollectionViewCell
的 Contentview
。
我已经尝试从库中 ResizeProcessor
和 ScaleFactor
,但结果图像似乎 blur
。我的实现如下(函数在 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])
有没有我做错了什么? images
画质好像很模糊
您应该将 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))
我正在开发一个应用程序,使用 Kingfisher 库从 ulr 加载图像并在 CollectionViewCell
中显示。我正在尝试调整图像大小以适应 CollectionViewCell
的 Contentview
。
我已经尝试从库中 ResizeProcessor
和 ScaleFactor
,但结果图像似乎 blur
。我的实现如下(函数在 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])
有没有我做错了什么? images
画质好像很模糊
您应该将 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))