iOS 图片裁剪,旋转角度,微调角度 LEGOImageCropper
实现与效果
- 微调角度
- 90°角旋转
- 改变宽高比例
- 旋转和微调过程中适应边框填充边界
- 源码
微调角度
- (void)beginTrackingWithTouch {// 开始微调角度}- (void)continueTrackingWithTouch:(CGFloat)value changeValue:(CGFloat)changeValue {// 调整中[self.imageCropperView setRotationAngle:changeValue];}- (void)endTrackingWithTouch {// 微调角度结束}
90°角旋转
- (void)rotate:(id)sender {[self.imageCropperView rotation:YES];}
改变宽高比例
- (void)resizeWHScale:(id)sender {[UIView animateWithDuration:0.15 animations:^{self.imageCropperView.frame = [self imageCropViewFrame:self.currType];[self.imageCropperView setResizeWHRatio:self.currScale animated:NO];}completion:nil];
其他可设置属性
/** 裁剪框颜色 / Mask layer color */**@property (nonatomic, strong) UIColor *maskColor;/** 裁剪框阴影 / Mask frame color */**@property (nonatomic, strong) UIColor *shadowColor;/** 网格线颜色 / Gridlines color */**@property (nonatomic, strong) UIColor *shapeLayerColor;/** 是否允许双指自由旋转 / Allow two fingers to rotate freely ,default value is YES */**@property (nonatomic, assign, getter=isRotationEnabled) BOOL rotationEnabled;/** 是否允许双击重置 / Allow double click Reset , default value is YES */**@property (nonatomic, assign, getter=isDoubleResetEnabled) BOOL doubleResetEnabled;/** 是否为顺势转旋转 / Is it clockwise rotation , default value is NO */**@property (nonatomic, assign, getter=isClockwiseRotation) BOOL clockwiseRotation;/** 重置 / reset */- (void)reset:(BOOL)animated;/** 设置【裁剪比例】 / Setup the cut scale */**@property (nonatomic, assign) CGSize resizeWHRatio;- (void)setResizeWHRatio:(CGSize)resizeWHRatio;- (void)setResizeWHRatio:(CGSize)resizeWHRatio animated:(BOOL)animated;/** 设置【旋转角度】/ Setup the rotation angle */@property (nonatomic, assign) CGFloat rotationAngle;- (void)rotation:(BOOL)animated;- (void)setRotationAngle:(CGFloat)rotationAngle;- (void)setRotationAngle:(CGFloat)rotationAngle animated:(BOOL)animated;
关于旋转和微调过程中适应边框填充边界的计算方式
旋转过程中,为防止漏出黑色背景区域,需要在调整过程中对 scrollview 进行缩放,以满足图片充满裁剪区域,计算方式如下:
即:
scrollview.width = CGRectGetWidth(maskRect) * cos(a) + CGRectGetHeight(maskRect) * sin(a);
scrollview.height = CGRectGetHeight(maskRect) * cos(a) + CGRectGetWidth(maskRect) * sin(a);
源码
有兴趣的可以下载看下,希望大佬多多点星。
https://github.com/legokit/LEGOImageCropper
GitHub - legokit/LEGOImageCropper: imageCropper, crop image, Picture cropper, support to resizeWHScale, set size, rotate angle, fine adjust angle, image crop. 图片裁剪,支持大小缩放,设置大小,旋转角度,微调角度,裁剪产品图片。。
https://www.jianshu.com/p/16fb4ddf0890
iOS 图片裁剪,旋转角度,微调角度 LEGOImageCropper相关推荐
- ios 图片裁剪框架_iOS图片裁剪器 – RSKImageCropper
RSKImageCropper iOS图片裁剪器,类似Contacts应用中的图片定位美化. 基础使用方法 导入类header. #import Just create a view controll ...
- iOS 图片裁剪(用户头像裁剪)
图片裁剪 把一张图片裁剪为指定的样式,比如常见的用户头像 思路: 在图片的基础上绘制时,需要创建一个位图上下文 确定裁剪区域(超出裁剪区域的都将被清除) 绘制图片 从位图上下文中获取图片 关闭上下文 ...
- ios 图片裁剪-制作圆形QQ头像
/** * 图片裁剪 裁剪原理: 先在控制器上确定一个区域,然后再把需要裁剪的图片放在该区域上面,超出区域的图片都不显示 * * @param rect */ -(void) draw ...
- DDGScreenShot —iOS 图片裁剪,切圆角,加边框,你还用cornerRadius,还有更高级的方法...
写在前面 我们肯定做过这样的需求,给一个图片切圆角, 当然我们大多采用简单粗暴的方法 myIcon.layer.cornerRadius = 16.5 myIcon.layer.masksToBoun ...
- ios 图片裁剪框架_iOS 图片裁剪与修改
最近做的项目中需要上传头像,发表内容的时候也要涉及到图片上传,我直接用的原图上传,但是由于公司网络差,原图太大,老是加载好久好久,所以需要把原图裁剪或者修改分辨率之后再上传,找了好久,做了很多尝试才解 ...
- 浮士德html5图片裁剪器2016开源版
前言 最近刚刚好整理浮士德头像裁剪的flash版本,为了某些低级浏览器的兼容着想,既然已经做好了flash版本了,那么,现代浏览器的html5版本和ipad版,移动版也要做一些处理和打包. 兼容性 兼 ...
- DDGScreenShot--iOS 图片裁剪,圆角设置,你还用cornerRadius,还有更高级的方法
写在前面 我们肯定做过这样的需求,给一个图片切圆角, 当然我们大多采用简单粗暴的方法 myIcon.layer.cornerRadius = 16.5 myIcon.layer.masksToBoun ...
- 一个利用html5的图片裁剪功能(已解决ios压扁缩放等bug)
推荐: 这一篇文章是早年为了解决图片裁剪的探索性文章,现在已经开放出了falsh版及html5版本的图片裁剪插件,各位有时间可以看看: 浮士德html5图片裁剪器2016开源版 浮士德头像裁剪flas ...
- ios 将矩形图片裁剪成圆形图片
在ios中将一个正方形的图片裁剪成圆形的图片是一件非常容易的事情, 直接设置 imageView.layer.cornerRadius 这个属性, 再设置 imageView.clipsToBound ...
最新文章
- 技术图文:如何利用 C# 实现 误差反向传播 学习规则?
- redis 计数器 java_Redis 实践汇总和使用建议。
- 汇编语言——100个数中的最大数
- guava 集合转换_Guava的Collections2:过滤和转换Java集合
- 【数据库系统】形式化查询语言の关系代数
- LeCun自曝使用C语言23年之久,2年前才用Python,还曾短暂尝试Lua
- matlab 下采样_Lattice规划与Matlab实现(1)
- 堆排序c语言6,C语言:十种排序(七) - 堆排序
- 【django】三、常用的模板标签和过滤器
- 漏洞分析C#反编译软件Reflector 11.1.0.2167(最新版)(附补丁下载)
- 我珍藏的神兵利器 - 效率工具for Win[转]
- LATEX参考文献添加文章doi号并嵌入超链接+IEEE期刊缩写查询
- RestTemplate使用实战-exchange方法讲解
- 燕东微通过注册:预计年营收超20亿 亦庄国投与京东方是股东
- 智能电子后视镜MFC01-LCD产品标定说明
- 二进制和 四,八,十,十六,三十二进制的转换
- 基于数据分析,是否自动档汽车比手动挡更耗油
- 操作系统:Linux进程与线程
- bzoj 3837 pa2013 Filary
- SAR ADC系列16:CDAC上机实践+作业
热门文章
- 58 mysql 军规_58 到家 MySQL 军规升级版
- Unsharp Mask(USM)锐化算法的的原理及其实现
- 在Windows操作系统上使用rtsp simple server和ffmpeg推送录屏视频流
- 软件测试自学乐器儿童画,面对丰富多彩的儿童画世界我们怎样欣赏
- AT89C51定时器/计数器的使用
- python的dataframe的mul_python pandas DataFrame.mul用法及代码示例
- 计算机机房雷电接地,计算机机房的雷电防护途径研究
- 麻省理工学院发起人工智能项目MIT IQ
- Gmail无法显示邮件图片的解决方法
- PHP+新浪微博开放平台+新浪云平台(SAE)开发微博应用——进一步学习的走向和有用的资源