为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

iOS
回首忆惘然 2019-10-24 14:19:59
我需要按比例缩小图像,但要采用清晰的方式。例如,在Photoshop中,图像尺寸缩小选项为“ Bicubic Smoother”(模糊)和“ Bicubic Sharper”。该图像缩小算法是在某个地方开源或记录的,还是SDK提供了执行此操作的方法?
查看完整描述

3 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

如果有人正在寻找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

}


查看完整回答
反对 回复 2019-10-24
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

对于那些使用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

}


查看完整回答
反对 回复 2019-10-24
  • 3 回答
  • 0 关注
  • 638 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信