/*
从相册选取一张图片作为头像,作为头像的图片希望是方形的,所以需要对图片进行处理,
图片宽大于高,则填充上下,使宽高一致,
图片高大于宽,则填充左右,使宽高一致
*/
-(UIImage *)cutCenterImage:(UIImage *)image { CGSize imageSize = image.size; if (imageSize.width == imageSize.height) return image; CGRect rect; CGSize contentSize; //初始化图片的显示位置,以及UIGraphicsBeginImageContext的显示范围 if (imageSize.height > imageSize.width) { contentSize = CGSizeMake(imageSize.height, imageSize.height); float leftMargin = (imageSize.height - imageSize.width) * 0.5; rect = CGRectMake(leftMargin, 0, imageSize.width, imageSize.height); }else{ contentSize = CGSizeMake(imageSize.width, imageSize.width); float topMargin = (imageSize.width - imageSize.height) * 0.5; rect = CGRectMake(0, topMargin, imageSize.width, imageSize.height); } CGImageRef imageRef = image.CGImage; CGImageRef imageRefRect = CGImageCreateWithImageInRect(imageRef, rect); UIImage *tmp = [[UIImage alloc] initWithCGImage:imageRefRect]; CGImageRelease(imageRefRect); // 新建一个UIGraphicsBeginImageContext,设置好背景颜色,把图片放到相应位置,截图,生成新的方形图片 UIGraphicsBeginImageContext(contentSize); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]); UIRectFill(CGRectMake(0, 0, contentSize.width, contentSize.height)); [tmp drawInRect:rect]; tmp = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return tmp; }