使用 AlamofireImage 调整下载图像的大小
Resize Download Image with AlamofireImage
我在 UICollectionViewCell
上有 200px x 200px UIImageView
将显示来自 URL 的图像。问题是我不知道 URL 提供的图像分辨率是多少,我认为由于内存消耗,最好在放入 UIImageView
之前先调整它的大小。
我已经使用 alamofire 下载图像
let url = NSURL(string: "http:\(product.picUrl)")
self.imgProductItem.af_setImageWithURL(url!, placeholderImage: UIImage(named: "app_default-resize"))
我想知道有没有什么方法可以先调整它的大小,然后再放入 UIImageView
?如果有任何有关下载图像以节省内存使用量的提示,我想听听。
如有任何帮助,我们将不胜感激。谢谢。
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
}
您可以使用过滤器:
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。
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!
}
我在 UICollectionViewCell
上有 200px x 200px UIImageView
将显示来自 URL 的图像。问题是我不知道 URL 提供的图像分辨率是多少,我认为由于内存消耗,最好在放入 UIImageView
之前先调整它的大小。
我已经使用 alamofire 下载图像
let url = NSURL(string: "http:\(product.picUrl)")
self.imgProductItem.af_setImageWithURL(url!, placeholderImage: UIImage(named: "app_default-resize"))
我想知道有没有什么方法可以先调整它的大小,然后再放入 UIImageView
?如果有任何有关下载图像以节省内存使用量的提示,我想听听。
如有任何帮助,我们将不胜感激。谢谢。
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
}
您可以使用过滤器:
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。
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!
}