美文网首页
iOS 中更改图像尺寸的几种方法

iOS 中更改图像尺寸的几种方法

作者: 能量达人儿 | 来源:发表于2017-08-27 21:30 被阅读15次

    iOS 中有多种方法能够更改图片的尺寸,各种方法有不同的性能。

    使用UIGraphicsBeginImageContext

    UIKit 框架中提供了UIGraphicsBeginImageContext() 和 UIGraphicsGetImageFromCurrentImageContext()方法来更改图像尺寸。

    + (UIImage *)scaleImage:(UIImage *)image toSize:(CGSize)size {
        UIGraphicsBeginImageContext(size);
        [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
        UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return scaledImage;
    }
    

    使用CGBitmapContextCreate & CGContextDrawImage

    Core Graphics / Quartz 2D 同样提供了 APIs 来处理图片尺寸调整。

    + (UIImage *)scaleImage:(UIImage *)image toSize:(CGSize)size {
        CGImageRef cgImage = image.CGImage;
        size_t bitsPerComponent = CGImageGetBitsPerComponent(cgImage);
        size_t bytesPerRow = CGImageGetBytesPerRow(cgImage);
        CGColorSpaceRef colorSpace = CGImageGetColorSpace(cgImage);
        CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(cgImage);
        
        CGContextRef context = CGBitmapContextCreate(nil, size.width, size.height, bitsPerComponent, bytesPerRow, colorSpace, bitmapInfo);
        CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
        CGContextDrawImage(context, CGRectMake(0, 0, size.width, size.height), cgImage);
        
        UIImage *scaredImage = [UIImage imageWithCGImage:CGBitmapContextCreateImage(context)];
    
        CGContextRelease(context);
        CGImageRelease(cgImage);
    
        return scaledImage;
    }
    

    相关文章

      网友评论

          本文标题:iOS 中更改图像尺寸的几种方法

          本文链接:https://www.haomeiwen.com/subject/uiuidxtx.html