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