【发布时间】:2015-09-16 15:24:09
【问题描述】:
我正在使用下面的函数来调整图像的宽度和高度,但我注意到它会破坏图像质量。
class func imageWithSize(image: UIImage,size: CGSize)->UIImage{
if UIScreen.mainScreen().respondsToSelector("scale"){
UIGraphicsBeginImageContextWithOptions(size,false,UIScreen.mainScreen().scale);
}
else
{
UIGraphicsBeginImageContext(size);
}
image.drawInRect(CGRectMake(0, 0, size.width, size.height));
var newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
class func resizeImageWithAspect(image: UIImage,scaledToMaxWidth width:CGFloat,maxHeight height :CGFloat)->UIImage
{
let scaleFactor = width / height;
let newSize = CGSizeMake(width, height);
return imageWithSize(image, size: newSize);
}
有没有其他方法可以在不影响质量的情况下调整图像大小?或者如何修复下面的函数,以免在调整大小后破坏图像质量?
【问题讨论】:
-
您获得哪种品质,您期望哪种品质?
-
@Mats 它将图像大小正确调整为我传递给函数的任何宽度和高度。问题是图像变得模糊
-
仅供参考 - iOS 4 中添加了
UIGraphicsBeginImageContextWithOptions功能。检查在当今时代是否应该使用它是毫无意义的。 -
@rmaddy 知道我应该为 iOS 8 使用什么吗?我只想调整高度和宽度的大小而不让输出变得模糊
-
只要 newSize 保持原来的纵横比并且你正在缩小图像,你所做的看起来是正确的。