zoukankan      html  css  js  c++  java
  • ios图片的压缩

    最近做图片的上传,由于项目中的涉及到的图片是从相册和相机中拍照获取的,所以图片的类型不一定,有些是jpg有些是png,另外随着现在设备相继的像素越来越高,所拍摄的图片也越来越到,在图片上传之前我们是需要进行一定的处理的。最常见的是1.缩小图片的尺寸。2:降低图片的质量。针对以上两种方法,我编写了一个UIImage的Category.代码如下:

    //

    //  UIImage+Resize.h

    //  hjclass

    //

    //  Created by alan chen on 14-4-17.

    //  Copyright (c) 2014 alan chen. All rights reserved.

    //

     

    #import <UIKit/UIKit.h>

     @interface UIImage (Resize)

     - (UIImage*)scaleToSize:(CGSize)size;

    - (UIImage*)compressToCompressent:(float)compress;

     

    @end

     

    //

    //  UIImage+Resize.m

    //  hjclass

    //

    //  Created by alan chen on 14-4-17.

    //  Copyright (c) 2014 alan chen. All rights reserved.

    //

     

    #import "UIImage+Resize.h"

     

    @implementation UIImage (Resize)

     

    - (UIImage*)scaleToSize:(CGSize)size{

        UIGraphicsBeginImageContext(size);//创建bitmapcontext 并设置当前使用的context

        [self drawAsPatternInRect:CGRectMake(0, 0, size.width, size.height)];//在指定的区域绘制图片

        UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();//从当前context中获取压缩后的image

        UIGraphicsEndImageContext(); //将当前的context从堆栈中退出

        return scaledImage;

    }

     

    - (UIImage*)compressToCompressent:(float)compress{

        NSData *data;//判断图片是不是png格式的文件

        if(UIImagePNGRepresentation(self)){

            data = UIImagePNGRepresentation(self);//png格式是不能够压缩的

        }else{

            data = UIImageJPEGRepresentation(self, compress);

        }

        return [UIImage imageWithData: data];

    }

     

    @end

     

    这个Category中有两个方法,分别用于压缩图片的大小和图片的质量,对于压缩图片的大小我们在项目中一般建议进行等比压缩,保证图片在视觉上不变形,压缩图片的大小能够快速的降低图片的大小。一般大小压缩比大约为scale*scale,也就是长宽压缩比之积。令外对于质量压缩,很多资料建议压缩比大于8.但是我在实际情况中采用压缩比大于8也没有看到非常明显的失真。我们一般从1.0压缩到0.5,图片的大小将会压缩到原来的1/8-1/9.但是在0.5压缩到0.2的时候,图片的大小只会减少1/2左右。所以从0.5到0.2的压缩效果不如1.0到0.5那么明显。那么其实我们在项目开发过程中我们一般将图片压缩到100k以内就可以了。

     

     

     

     

  • 相关阅读:
    AR_销售订单收款基本操作(流程)
    AR_标准应收过账至总账基本操作(流程)
    AP_建立银行信息总行、分行、账户(设定)
    AP_费用报表报销基本操作(流程)
    AP_付款方式汇总:标准付款、退款退货付款、撤销付款(概念)
    AP_标准预付款核销基本操作(流程)
    AP_标准采购单付基本操作(流程)
    AP_创建标准发票后会计科目的变化(概念)
    Workflow_标准控件Wait_For_Flow和Contiune_Flow的用法(案例)
    Workflow_将一个消息同时发给通过用户(案例)
  • 原文地址:https://www.cnblogs.com/xishui2011/p/3672151.html
Copyright © 2011-2022 走看看