将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
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;
}