美文网首页
iOS图片压缩

iOS图片压缩

作者: iOS_tree | 来源:发表于2018-11-14 11:35 被阅读0次

    最近发现用户下载自己上传的图片比较耗时,检测发现是上传的原始图片过大,于是寻找降低图片数据大小的方法。

    发现以下方法:

    UIKIT_EXTERN  NSData * __nullable UIImageJPEGRepresentation(UIImage * __nonnull image, CGFloat compressionQuality);  // return image as JPEG. May return nil if image has no CGImageRef or invalid bitmap format. compression is 0(most)..1(least)

    该方法可以把UIImage对象转换为JPEG图片格式,返回NSData对象。函数有两个参数,一个为UIImage对象,一个为压缩质量,取值为0-1。压缩大小取决于压缩质量参数,质量越小,返回的NSData数据越小。

    该方法在不改变图片的分辨率的情况下降低图片的大小。对PNG格式的图片非常适用。

    该方法上还有一个方法为返回PNG格式图片的二进制数据的方法:

    UIKIT_EXTERN NSData * __nullable UIImagePNGRepresentation(UIImage * __nonnull image); // return image as PNG. May return nil if image has no CGImageRef or invalid bitmap format

    使用时要注意,在UIImage对象没有CGImageRef属性或者没有可用的bitmap格式时使用该方法会返回nil。

    如果要改变图片的分辨率来缩小图片占空间的大小,则可以使用图片绘制功能进行缩放,具体方法如下:

    UIGraphicsBeginImageContext(size);

    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];

    resultImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    各函数方法说明如下:

    //开启图片绘制上下文,参数为要绘制图片的大小

    UIKIT_EXTERN void UIGraphicsBeginImageContext(CGSize size);

    //UIImage的绘制方法,把图片绘制到指定上下文中,参数为指定绘制的区域

    - (void)drawInRect:(CGRect)rect; // mode = kCGBlendModeNormal, alpha = 1.0

    //取出绘制好的图片,图片分辨率为开启上下文时设置的大小

    UIKIT_EXTERN UIImage* __nullable UIGraphicsGetImageFromCurrentImageContext(void);

    //关闭图片上下文

    UIKIT_EXTERN void     UIGraphicsEndImageContext(void);

    相关文章

      网友评论

          本文标题:iOS图片压缩

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