首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调整sdwebImage swift大小

调整sdwebImage swift大小
EN

Stack Overflow用户
提问于 2016-03-28 18:23:48
回答 4查看 4.7K关注 0票数 4

你好,我正在使用sdwebImage在我的应用程序上显示图像。我在这里有一个代码来调整图像的大小

代码语言:javascript
复制
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在此处显示的图像的大小

代码语言:javascript
复制
   cell.profileImageView.sd_setImageWithURL(UIImage().absoluteURL(profileImageUrl as! String), placeholderImage: UIImage.init(named: "default-profile-icon")?.circle!, completed: completionBlock)
EN

回答 4

Stack Overflow用户

发布于 2016-03-28 18:46:13

喜欢吗?

代码语言:javascript
复制
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)
    }
)
票数 7
EN

Stack Overflow用户

发布于 2016-03-28 18:50:31

SDWebImage通过其SDWebImageManagerDelegate协议直接支持图像处理。您可以使用imageManager:transformDownloadedImage:withURL:方法对下载的图片进行转换。

您可以像这样设置镜像管理器代理:

代码语言:javascript
复制
SDWebImageManager.sharedManager.delegate = self;
票数 1
EN

Stack Overflow用户

发布于 2017-08-02 06:09:37

使用共享SDWebImageManager不是一个好主意。一些进程可以在这段时间内下载图像。

我在类中使用自定义SDWebImageManager和自定义SDWebImageManagerDelegate大小调整的swift 3示例。

代码语言:javascript
复制
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
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36260379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档