使用AlamofireImage调整下载图像大小

时间:2016-08-24 23:44:11

标签: ios swift uiimageview alamofireimage

我在UIImageView上有200px x 200px UICollectionViewCell,它将显示来自网址的图片。问题是我不知道URL提供了什么分辨率的图像,我认为最好在放入UIImageView之前先调整它的大小,因为内存消耗。

我已经使用alamofire下载图片

let url = NSURL(string: "http:\(product.picUrl)")
self.imgProductItem.af_setImageWithURL(url!, placeholderImage: UIImage(named: "app_default-resize"))

我想知道在使用UIImageView之前是否有任何方法可以先调整大小?如果有任何下载图像以节省内存使用的提示,我想听听。

任何帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:12)

您可以使用过滤器:

let url = URL(string: ...)!
let placeholder = UIImage(named: "app_default-resize")
let filter = AspectScaledToFillSizeFilter(size: imageView.frame.size)
imageView.af_setImage(withURL: url, placeholderImage: placeholder, filter: filter)

请参阅https://github.com/Alamofire/AlamofireImage#image-filters-1

对于Swift 2版本,请参阅previous revision of this answer

答案 1 :(得分:0)

func ResizeImage(image: UIImage, targetSize: CGSize) -> UIImage {

    let rect = CGRectMake(0, 0, targetSize.width, targetSize.height)

    UIGraphicsBeginImageContextWithOptions(targetSize, false, 1.0)
    image.drawInRect(rect)
    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return newImage
}

答案 2 :(得分:0)

swift 5 更新

func ResizeImage(image: UIImage, targetSize: CGSize) -> UIImage {
    let rect = CGRect(x: 0, y: 0, width: targetSize.width, height: targetSize.height)
    UIGraphicsBeginImageContextWithOptions(targetSize, false, 1.0)
    image.draw(in: rect)
    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return newImage!
}