【代碼筆記】根據size截取螢幕中間矩形地區,size截取
代碼:
RootViewController.m
#import "RootViewController.h"@interface RootViewController ()@end@implementation RootViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self;}- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view. //初始化介面 [self addView]; }#pragma -mark -functions//初始化介面-(void)addView{ UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(50, 100, 200, 200)]; imageView.backgroundColor=[UIColor redColor]; //顯示截取的圖 imageView.image=[self cutCenterImage:[UIImage imageNamed:@"1.jpg"] size:CGSizeMake(200, 200)]; [self.view addSubview:imageView];}#pragma mark 根據size截取圖片中間矩形地區的圖片 這裡的size是正方形-(UIImage *)cutCenterImage:(UIImage *)image size:(CGSize)size{ CGSize imageSize = image.size; CGRect rect; //根據圖片的大小計算出圖片中間矩形地區的位置與大小 if (imageSize.width > imageSize.height) { float leftMargin = (imageSize.width - imageSize.height) * 0.5; rect = CGRectMake(leftMargin, 0, imageSize.height, imageSize.height); }else{ float topMargin = (imageSize.height - imageSize.width) * 0.5; rect = CGRectMake(0, topMargin, imageSize.width, imageSize.width); } CGImageRef imageRef = image.CGImage; //截取中間地區矩形圖片 CGImageRef imageRefRect = CGImageCreateWithImageInRect(imageRef, rect); UIImage *tmp = [[UIImage alloc] initWithCGImage:imageRefRect]; CGImageRelease(imageRefRect); UIGraphicsBeginImageContext(size); CGRect rectDraw = CGRectMake(0, 0, size.width, size.height); [tmp drawInRect:rectDraw]; // 從當前context中建立一個改變大小後的圖片 tmp = UIGraphicsGetImageFromCurrentImageContext(); // 使當前的context出堆棧 UIGraphicsEndImageContext(); return tmp;}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}