UIImage扩展

来源:互联网 发布:win10看图软件 知乎 编辑:程序博客网 时间:2024/05/20 03:37
////  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


0 0
原创粉丝点击