等比缩放图片裁剪指定区域图片
/** * 等比缩放图片裁剪指定区域图片 * *
@param image 原图 *
@param size 裁剪范围 * *
@return 裁剪后的图片
*/
-(UIImage *)compressImageWith:(UIImage *)image scaleToSize:(CGSize)size {
// 原图宽
CGFloat imageWidth = image.size.width;
// 原图高
CGFloat imageHeight = image.size.height;
// 缩放比例
CGFloat widthScale = imageWidth /size.width;
CGFloat heightScale = imageHeight /size.height;
// 创建一个bitmap的context
// 并把它设置成为当前正在使用的context UIGraphicsBeginImageContext(CGSizeMake(size.width, size.height));
// 横屏图片
if (widthScale > heightScale) {
[image drawInRect:CGRectMake(0, 0, imageWidth /heightScale , size.height)];
} else {
// 竖屏图片
[image drawInRect:CGRectMake(0, 0, size.width , imageHeight /widthScale)];
}
// 从当前context中创建一个改变大小后的图片
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
// 使当前的context出堆栈
UIGraphicsEndImageContext();
return newImage;
}