有关于图片压缩大小--尺寸裁剪 和 压缩系数

最近在做一些图片展示的页面,对于图片大小压缩 可以从

UIImageJPEGRepresentation(newImage, 0.5);第一个系数 是对于的图片,第二个对应的压缩系数。在相同的压缩系数下 使用UIImagePNGRepresentation(newImage, 0.5) 产生的图片大小 会比第一个大一个,可以自由的选择0 ~ 1 的压缩系数。

 如果在采用压缩系数 还是不够好的情况下,可以适当的裁剪图片的尺寸大小,对应相应的CGSize ,如果size过小的情况,图片显示会非常模糊,所以 两者要协调好。

- (NSData *)imageWithImage:(UIImage*)image

              scaledToSize:(CGSize)newSize;

{

    UIGraphicsBeginImageContext(newSize);

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

    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return UIImageJPEGRepresentation(newImage, 0.25);

}

在选择照片的时候 也可以使用GCD处理 再在主线程刷新

//参考以下 图片大小处理

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            for (int i=0; i<assets.count; i++) {//选择的照片 假设在相册中选择多张
                ALAsset *asset=assets[i];
                UIImage *tempImg=[UIImage imageWithCGImage:asset.defaultRepresentation.fullScreenImage];
                float max_image_size = 150;//设定最大图像 大小
                NSData *imageData = nil;
                for (int i=0;i<10;i++){//在1- 10 中取到最合适和压缩系数
                    @autoreleasepool {
                        imageData = UIImageJPEGRepresentation(tempImg, 1.0f-(float)i*.1f);
                        if (imageData.length<max_image_size*1024){
                            break;
                        }
                    }
                }
                [_aryPics addObject:[UIImage imageWithData:imageData]];
                dispatch_async(dispatch_get_main_queue(), ^{//刷新界面
                   //.....
                });
            }
        });
    }
}
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值