ios 图片缩放,等比例压缩

http://hi.baidu.com/d19890415/item/1ceb93eec881080c6dabb87d

将UIImage缩放到指定大小尺寸:

- (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{  
   // 创建一个bitmap的context  
    // 并把它设置成为当前正在使用的context  
   UIGraphicsBeginImageContext(size);  
   // 绘制改变大小的图片  
    [img drawInRect:CGRectMake(0, 0, size.width, size.height)];  
    // 从当前context中创建一个改变大小后的图片  
    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();  
    // 使当前的context出堆栈  
    UIGraphicsEndImageContext();  
   // 返回新的改变大小后的图片  
    return scaledImage;  
}



根据图片的大小等比例压缩返回图片
02+(UIImage *)fitSmallImage:(UIImage *)image
03{
04    if (nil == image)
05    {
06        return nil;
07    }
08    if (image.size.width<IMAGE_MAX_SIZE_WIDTH && image.size.height<IMAGE_MAX_SIZE_GEIGHT)
09    {
10        return image;
11    }
12    CGSize size = [DSMDataConvert fitsize:image.size];
13    UIGraphicsBeginImageContext(size);
14    CGRect rect = CGRectMake(0, 0, size.width, size.height);
15    [image drawInRect:rect];
16    UIImage *newing = UIGraphicsGetImageFromCurrentImageContext();
17    UIGraphicsEndImageContext();
18    return newing;
19}
+ (CGSize)fitsize:(CGSize)thisSize
02{
03    if(thisSize.width == 0 && thisSize.height ==0)
04        return CGSizeMake(0, 0);
05    CGFloat wscale = thisSize.width/IMAGE_MAX_SIZE_WIDTH;
06    CGFloat hscale = thisSize.height/IMAGE_MAX_SIZE_GEIGHT;
07    CGFloat scale = (wscale>hscale)?wscale:hscale;
08    CGSize newSize = CGSizeMake(thisSize.width/scale, thisSize.height/scale);
09    return newSize;

10}




1. 用下面的方法选中你要压缩的图片,然后输出到sentencePic这个uiimageview中,你调用这个sentencepic发送到服务器就行了。

2. 设置压缩比例大小的是这个:imageFrame。你在viewdidload中,CGRect   imageFrame = sentencePic.frame; //其中sentencePic.frame是你想要截取图片的尺寸。自行设定


-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
    
    UIImage *chosenImage = [info objectForKey:UIImagePickerControllerEditedImage];
    UIImage *sharkenImage = shrinkImage(chosenImage, imageFrame.size);
    sentencePic.image = sharkenImage;
    
    [picker dismissModalViewControllerAnimated:YES];
}



static UIImage *shrinkImage(UIImage *original, CGSize size){
    CGFloat scale = [UIScreen mainScreen].scale;
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    
    CGContextRef context = CGBitmapContextCreate(nil, size.width *scale, size.height *scale, 8, 0, colorSpace, kCGImageAlphaPremultipliedFirst);//NULL
    CGContextDrawImage(context, CGRectMake(0, 0, size.width *scale, size.height *scale), original.CGImage);
    CGImageRef shrunken = CGBitmapContextCreateImage(context);
    UIImage *final = [UIImage imageWithCGImage:shrunken];
    CGContextRelease(context);
    CGImageRelease(shrunken);
    return final;
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值