iOS Swift:如何正确缩小图像?

我正在使用AlamofireImage下载并设置我的UIImage:

backdrop.af_setImageWithURL(downloadURL) 

图像远远大于我将要显示的图像,因此我遇到了别名问题。 如何正确调整此图像的大小?

结果:

在此处输入图像描述

一旦有了有效的UIImage您可以使用任何大小调整图像大小:

 func resizedImageWith(image: UIImage, targetSize: CGSize) -> UIImage { let imageSize = image.size let newWidth = targetSize.width / image.size.width let newHeight = targetSize.height / image.size.height var newSize: CGSize if(newWidth > newHeight) { newSize = CGSizeMake(imageSize.width * newHeight, imageSize.height * newHeight) } else { newSize = CGSizeMake(imageSize.width * newWidth, imageSize.height * newWidth) } let rect = CGRectMake(0, 0, newSize.width, newSize.height) UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0) image.drawInRect(rect) let newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage } 

对于您拥有的任何其他查询/修改,请参阅此NShipster

这是@Santosh在ObjC中的回答:

 - (UIImage*) scaleImage:(UIImage*)image toSize:(CGSize)newSize { CGSize imageSize = image.size; CGFloat newWidth = newSize.width / image.size.width; CGFloat newHeight = newSize.height / image.size.height; CGSize newImgSize; if(newWidth > newHeight) { newImgSize = CGSizeMake(imageSize.width * newHeight, imageSize.height * newHeight); } else { newImgSize = CGSizeMake(imageSize.width * newWidth, imageSize.height * newWidth); } CGRect rect = CGRectMake(0, 0, newImgSize.width, newImgSize.height); UIGraphicsBeginImageContextWithOptions(newImgSize, false, 0.0); [image drawInRect:rect];; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; }