猿问

如何按比例缩小UIImage并使其酥脆/清晰而不是模糊?

我需要按比例缩小图像,但要采用清晰的方式。例如,在Photoshop中,图像尺寸缩小选项为“ Bicubic Smoother”(模糊)和“ Bicubic Sharper”。


该图像缩小算法是在某个地方开源或记录的,还是SDK提供了执行此操作的方法?


回首忆惘然
浏览 639回答 3
3回答

慕斯王

如果有人正在寻找Swift版本,这是@Dan Rosenstark接受的答案的Swift版本:func resizeImage(image: UIImage, newHeight: CGFloat) -> UIImage {    let scale = newHeight / image.size.height    let newWidth = image.size.width * scale    UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight))    image.drawInRect(CGRectMake(0, 0, newWidth, newHeight))    let newImage = UIGraphicsGetImageFromCurrentImageContext()    UIGraphicsEndImageContext()    return newImage}

眼眸繁星

对于那些使用Swift的人,这是Swift中公认的答案:func resizeImage(image: UIImage, newSize: CGSize) -> (UIImage) {    let newRect = CGRectIntegral(CGRectMake(0,0, newSize.width, newSize.height))    let imageRef = image.CGImage    UIGraphicsBeginImageContextWithOptions(newSize, false, 0)    let context = UIGraphicsGetCurrentContext()    // Set the quality level to use when rescaling    CGContextSetInterpolationQuality(context, kCGInterpolationHigh)    let flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, newSize.height)    CGContextConcatCTM(context, flipVertical)    // Draw into the context; this scales the image    CGContextDrawImage(context, newRect, imageRef)    let newImageRef = CGBitmapContextCreateImage(context) as CGImage    let newImage = UIImage(CGImage: newImageRef)    // Get the resized image from the context and a UIImage    UIGraphicsEndImageContext()    return newImage}
随时随地看视频慕课网APP

相关分类

iOS
我要回答