你好,我正在使用sdwebImage在我的应用程序上显示图像。我在这里有一个代码来调整图像的大小
func resizeImage(image: UIImage, newWidth: CGFloat) -> UIImage {
let scale = newWidth / image.size.width
let newHeight = image.size.height * scale
UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight))
image.drawInRect(CGRectMake(0, 0, newWidth, newHeight))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}问题是上面的函数接受URL作为参数,而sdwebimage接受UIImage。如何在sdwebimage中调用上面的resize函数。或者简而言之,我如何调整通过sdwebImage在此处显示的图像的大小
cell.profileImageView.sd_setImageWithURL(UIImage().absoluteURL(profileImageUrl as! String), placeholderImage: UIImage.init(named: "default-profile-icon")?.circle!, completed: completionBlock)发布于 2016-03-28 18:46:13
喜欢吗?
cell.profileImageView.sd_setImageWithURL(
NSURL(string: profileImageUrl as! String),
placeholderImage: UIImage.init(named: "default-profile-icon"),
options: nil,
progress: nil,
completed: { (image: UIImage?, error: NSError?, cacheType: SDImageCacheType!, imageURL: NSURL?) in
guard let image = image else { return }
print("Image arrived!")
cell.profileImageView.image = resizeImage(image, newWidth: 200)
}
)发布于 2016-03-28 18:50:31
SDWebImage通过其SDWebImageManagerDelegate协议直接支持图像处理。您可以使用imageManager:transformDownloadedImage:withURL:方法对下载的图片进行转换。
您可以像这样设置镜像管理器代理:
SDWebImageManager.sharedManager.delegate = self;发布于 2017-08-02 06:09:37
使用共享SDWebImageManager不是一个好主意。一些进程可以在这段时间内下载图像。
我在类中使用自定义SDWebImageManager和自定义SDWebImageManagerDelegate大小调整的swift 3示例。
import SDWebImage
class ImageResizer: NSObject, SDWebImageManagerDelegate {
private func resizeImage(_ image: UIImage, newHeight: CGFloat) -> UIImage {
let scale = newHeight / image.size.height
let newWidth = image.size.width * scale
UIGraphicsBeginImageContextWithOptions(CGSize(width: newWidth, height: newHeight), false, 0)
image.draw(in: CGRect(x: 0, y: 0, width: newWidth, height: newHeight))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage!
}
public func imageManager(_ imageManager: SDWebImageManager, transformDownloadedImage image: UIImage?, with imageURL: URL?) -> UIImage? {
guard let _image = image else {
return nil
}
return resizeImage(_image, newHeight: 20)
}
}
class BasicTrainView: XibView {
static let imageManager: SDWebImageManager = SDWebImageManager()
static let imageResizer = ImageResizer()
func xxx() {
BasicTrainView.imageManager.delegate = BasicTrainView.imageResizer
BasicTrainView.imageManager.loadImage(with: logoURL, options: [], progress: nil) { (image, _, error, sdImageCacheType, _, url) -> Void in
guard let _image = image else {
self.carrierLogoImageView.image = nil
return
}
self.carrierLogoImageView.image = _image
}
}
}https://stackoverflow.com/questions/36260379
复制相似问题