[英]SDWebImage process images before caching
我从网上获取了很多图像,它们都是各种尺寸 - 它们可以是大的,小的等等。
因此,当我在单元格中显示它们时,我可以调整它们的大小,但这是低效的。 在SDWebImage下载它们并缓存它们的大小后,重新调整它们的方式会更好,而不是将大图像存储在磁盘上并为每个单元调整大小。
那么我怎么能用SDWebImage做到这一点,或者我必须在课堂上进行一些修改?
我和你有同样的问题,并尝试首先调整SDWebImage,但最终构建了我自己的组件来解决问题。 你可以在这里看看它: https : //github.com/adig/RemoteImageView
SDWebImage 3.8.2
如果使用UIImageView类别sd_setImageWithURL
。 我创建了另一个UIImageView类别(扩展名)
func modifiedImageFromUrl(url: NSURL?) {
self.sd_setImageWithURL(url) { (image, error, cacheType, url) in
if cacheType == SDImageCacheType.None && image != nil {
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)) {
let modifiedImage = // modify image as you want
dispatch_async(dispatch_get_main_queue()) {
SDWebImageManager.sharedManager().saveImageToCache(modifiedImage, forURL: url)
self.image = modifiedImage
}
}
}
}
}
扩展MaeSTRo在Swift 3中的答案:
myImageView.sd_setImage(with: imageUrl){ (image, error, cacheType, url) in
guard let image = image, cacheType == .none else { return }
DispatchQueue.global(qos: .userInitiated).async {
let modifiedImage = myImageProcessor(image)
SDWebImageManager.shared().saveImage(toCache: modifiedImage, for: imageUrl)
DispatchQueue.main.async {
myImageView.image = modifiedImage
myImageView.setNeedsDisplay()
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.