我在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
之前是否有任何方法可以先调整大小?如果有任何下载图像以节省内存使用的提示,我想听听。
任何帮助将不胜感激。谢谢。
答案 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!
}