將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; }
根據圖片的大小等比例壓縮返回圖片ui
+(UIImage *)fitSmallImage:(UIImage *)image { if (nil == image) { return nil; } if (image.size.width { return image; } CGSize size = [DSMDataConvert fitsize:image.size]; UIGraphicsBeginImageContext(size); CGRect rect = CGRectMake(0, 0, size.width, size.height); [image drawInRect:rect]; UIImage *newing = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newing; } + (CGSize)fitsize:(CGSize)thisSize { if(thisSize.width == 0 && thisSize.height ==0) return CGSizeMake(0, 0); CGFloat wscale = thisSize.width/IMAGE_MAX_SIZE_WIDTH; CGFloat hscale = thisSize.height/IMAGE_MAX_SIZE_GEIGHT; CGFloat scale = (wscale>hscale)?wscale:hscale; CGSize newSize = CGSizeMake(thisSize.width/scale, thisSize.height/scale); return newSize; }
1. 用下面的方法選中你要壓縮的圖片,而後輸出到sentencePic這個uiimageview中,你調用這個sentencepic發送到服務器就好了。
2. 設置壓縮比例大小的是這個:imageFrame。你在viewdidload中,CGRect imageFrame = sentencePic.frame; //其中sentencePic.frame是你想要截取圖片的尺寸。自行設定this
-(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; }