【代码笔记】根据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.
}
复制代码

 


你可能感兴趣的:(【代码笔记】根据size截取屏幕中间矩形区域)