UIImage扩展
// // UIImage+Scale.h // CloudShopping // // Created by sixiaobo on 14-7-8. // Copyright (c) 2014年 com.Uni2uni. All rights reserved. // #import <UIKit/UIKit.h> /*! * @brief * @author huangyibiao */ @interface UIImage (Scale) /*! * @brief 根据指定的Rect来截取图片,返回截取后的图片 * @param rect 指定的Rect,如果大小超过图片大小,就会返回原图片 * @return 返回截取后的图片 */ - (UIImage *)subImageWithRect:(CGRect)rect; /*! * @brief 把图片等比例缩放到指定的size * @param size 缩放后的图片的大小 * @return 返回缩放后的图片 */ - (UIImage *)scaleToSize:(CGSize)size; @end
// // UIImage+Scale.m // CloudShopping // // Created by sixiaobo on 14-7-8. // Copyright (c) 2014年 com.Uni2uni. All rights reserved. // #import "UIImage+Scale.h" @implementation UIImage (Scale) #pragma mark - 截取部分图像 - (UIImage *)subImageWithRect:(CGRect)rect { CGImageRef subImageRef = CGImageCreateWithImageInRect(self.CGImage, rect); CGRect smallBounds = CGRectMake(0, 0, CGImageGetWidth(subImageRef), CGImageGetHeight(subImageRef)); UIGraphicsBeginImageContext(smallBounds.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextDrawImage(context, smallBounds, subImageRef); UIImage* smallImage = [UIImage imageWithCGImage:subImageRef]; UIGraphicsEndImageContext(); return smallImage; } #pragma mark - 等比例缩放 - (UIImage *)scaleToSize:(CGSize)size { CGFloat width = CGImageGetWidth(self.CGImage); CGFloat height = CGImageGetHeight(self.CGImage); float verticalRadio = size.height * 1.0 / height; float horizontalRadio = size.width * 1.0 / width; float radio = 1; if(verticalRadio > 1 && horizontalRadio > 1) { radio = verticalRadio > horizontalRadio ? horizontalRadio : verticalRadio; } else { radio = verticalRadio < horizontalRadio ? verticalRadio : horizontalRadio; } width = width * radio; height = height * radio; int xPos = (size.width - width) / 2; int yPos = (size.height - height) / 2; // 创建一个bitmap的context // 并把它设置成为当前正在使用的context UIGraphicsBeginImageContext(size); // 绘制改变大小的图片 [self drawInRect:CGRectMake(xPos, yPos, width, height)]; // 从当前context中创建一个改变大小后的图片 UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); // 使当前的context出堆栈 UIGraphicsEndImageContext(); // 返回新的改变大小后的图片 return scaledImage; } @end
最后更新:2017-04-03 05:39:42