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

【代码笔记】iOS-根据size截取屏幕中间矩形区域的更多相关文章
- opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
前言 好长时间没写博文了,今天偷偷懒写篇关于opencv2中鼠标响应操作的文章. 鼠标操作属于用户接口设计,以前一直使用Qt来做,但是如果只需要简单的鼠标,键盘操作,直接调用opencv库的函数也未尝 ...
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
这是两个相关的程序,前者是后者的基础.实际上前一个程序也是在前面博文的基础上做的修改,请参考<在OpenCV中利用鼠标绘制直线> .下面贴出代码. 程序之一,在OpenCV中利用鼠标绘制矩 ...
- OpenCV 学习笔记(2) 使用鼠标绘制矩形并截取和保存矩形区域图像
http://www.cnblogs.com/lidabo/p/3437587.html 0 效果展示 1工程源码 #include <opencv2/core/core.hpp> # ...
- 【hadoop代码笔记】Mapreduce shuffle过程之Map输出过程
一.概要描述 shuffle是MapReduce的一个核心过程,因此没有在前面的MapReduce作业提交的过程中描述,而是单独拿出来比较详细的描述. 根据官方的流程图示如下: 本篇文章中只是想尝试从 ...
- Android实例-程序界面内截取屏幕(XE8+小米2)
结果: 1.只能截取程序界面内的图片. 2.图片有点不清楚,自己设置清楚度. 实例代码: unit Unit1; interface uses System.SysUtils, System.Type ...
- 笔记-iOS 视图控制器转场详解(上)
这是一篇长文,详细讲解了视图控制器转场的方方面面,配有详细的示意图和代码,为了使得文章在微信公众号中易于阅读,seedante 辛苦将大量长篇代码用截图的方式呈现,另外作者也在 Github 上附上了 ...
- IOS开发笔记 IOS如何访问通讯录
IOS开发笔记 IOS如何访问通讯录 其实我是反对这类的需求,你说你读我的隐私,我肯定不愿意的. 幸好ios6.0 以后给了个权限控制.当打开app的时候你可以选择拒绝. 实现方法: [plain] ...
- <Python Text Processing with NLTK 2.0 Cookbook>代码笔记
如下是<Python Text Processing with NLTK 2.0 Cookbook>一书部分章节的代码笔记. Tokenizing text into sentences ...
- 转 如何在IOS设备中去掉屏幕上的status bar
引入如何在IOS设备中去掉屏幕上的status bar,即:不显示设备上方的[网络.时间.电池??]条?操作方法一:在-info.list项目文件中,加上“Status bar is initiall ...
随机推荐
- SpringIOC使用扩展
在上篇博客中,我们使用Spring通过setter访问器实现了对属性的赋值,这种做法被称为设值注入.除此之外Spring还提供了通过构造方法赋值的能力,成为构造注入.下面我们通过一个小demo来了解如 ...
- 行列式(三):n阶行列式
1.数学定义 n阶行列式定义如下: 2.算法实现 函数名: GetValue() 功能:返回一个行列式的值 Private Function GetValue() Dim gValue As Do ...
- Ajax学习记录
Ajax 1:ajax是一种页面局部刷新的技术,不是整个页面刷新.这里就像论坛评论里面的刷新,只是局部的,不是页面全部提交到服务器. 2:页面不刷新,创建个WebClient,它和服务器进行交互.&l ...
- Emit学习(4) - Dapper解析之数据对象映射(二)
承接着上一篇, 这一篇主要以堆栈的方式来演示一下, db数据转换到类中去的一个过程. 一.先看第一张图 程序在运行到176行(上一篇贴出的代码)的时候, 就会出现上图中的第一个栈. 那在此之前, Da ...
- 使用ExpandoObject来实现多个Model传送至视图
昨天Insus.NET有实现<使用ViewModel来实现多个Model传送至视图>http://www.cnblogs.com/insus/p/5594134.html 那今天Insus ...
- Web API应用架构在Winform混合框架中的应用(2)--自定义异常结果的处理
在上篇随笔<Web API应用架构在Winform混合框架中的应用(1)>中我介绍了关于如何在Winfrom里面整合WebAPI,作为一个新型数据源的接入方式,从而形成了三种不同的数据提供 ...
- javascript定时器,取消定时器,及js定时器优化方法
通常用的方法: 启动定时器: window.setInterval(Method,Time) Method是定时调用的js方法 Time是间隔时间,单位是毫秒 取消定时器: clearInterval ...
- 微信--获取access_token
今天,终于鼓足勇气,来到这片圣地,迎来人生新的开始. 第一次...... 最近做微信公众号,记录一下,仅供参看. 关于access_token微信公众号有相关说明: access_token是公众号的 ...
- SSH服务器与Android通信(1)--服务器端发送数据
很多应用要求SSH服务器不仅和PC通信,还要和Android移动设备通信,这时就需要用到JSON了.其基本原理是服务器将数据转换成JSON格式,发送给Android客户端,客户端再将JSON格式的数据 ...
- 泛函编程(34)-泛函变量:处理状态转变-ST Monad
泛函编程的核心模式就是函数组合(compositionality).实现函数组合的必要条件之一就是参与组合的各方程序都必须是纯代码的(pure code).所谓纯代码就是程序中的所有表达式都必须是Re ...