你的位置:首页 > 操作系统

[操作系统]【代码笔记】根据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.}
复制代码