UIImage 旋转和保存旋转 (转载)

最近一直没有写笔记, 总感觉自己少了点什么, 也没有转载什么有用的笔记, 今天小弟特此献上一篇图片旋转和保存旋转的功能实现, 注意这是转载, 我是来当自己笔记的, 哈哈哈哈...

 1 @interface ViewController ()
 2 {
 3     UIImageView * iv;
 4 }
 5 @end
 6
 7 @implementation ViewController
 8
 9 - (void)viewDidLoad
10 {
11     [super viewDidLoad];
12     // Do any additional setup after loading the view, typically from a nib.
13
14     CGRect rect = [[UIScreen mainScreen] bounds];
15
16     // 图像
17     iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"haha.png"]];
18     iv.frame = CGRectMake(60, 100, 200, 200);
19     [self.view addSubview:iv];
20
21     // 旋转按扭
22     UIButton * rotateBtn = [UIButton buttonWithType:UIButtonTypeCustom];
23     rotateBtn.frame = CGRectMake(0, rect.size.height-44, rect.size.width, 44);
24     rotateBtn.backgroundColor = [UIColor greenColor];
25     [rotateBtn addTarget:self action:@selector(rotateBtnClick) forControlEvents:UIControlEventTouchUpInside];
26     [self.view addSubview:rotateBtn];
27 }
28
29 #pragma mark - 调用图片旋转方法并保存旋转
30 - (void)rotateBtnClick
31 {
32     iv.image = [self image:iv.image rotation:UIImageOrientationRight];
33
34     NSString * path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
35     NSString * filePath = [NSString stringWithFormat:@"%@/rotateImage.png", path];
36     NSData * data = UIImagePNGRepresentation(iv.image);
37     [data writeToFile:filePath atomically:YES];
38 }
39
40 #pragma mark - 图片旋转方法
41 - (UIImage *)image:(UIImage *)image rotation:(UIImageOrientation)orientation
42 {
43     long double rotate = 0.0;
44     CGRect rect;
45     float translateX = 0;
46     float translateY = 0;
47     float scaleX = 1.0;
48     float scaleY = 1.0;
49
50     switch (orientation) {
51         case UIImageOrientationLeft:
52             rotate = M_PI_2;
53             rect = CGRectMake(0, 0, image.size.height, image.size.width);
54             translateX = 0;
55             translateY = -rect.size.width;
56             scaleY = rect.size.width/rect.size.height;
57             scaleX = rect.size.height/rect.size.width;
58             break;
59         case UIImageOrientationRight:
60             rotate = 3 * M_PI_2;
61             rect = CGRectMake(0, 0, image.size.height, image.size.width);
62             translateX = -rect.size.height;
63             translateY = 0;
64             scaleY = rect.size.width/rect.size.height;
65             scaleX = rect.size.height/rect.size.width;
66             break;
67         case UIImageOrientationDown:
68             rotate = M_PI;
69             rect = CGRectMake(0, 0, image.size.width, image.size.height);
70             translateX = -rect.size.width;
71             translateY = -rect.size.height;
72             break;
73         default:
74             rotate = 0.0;
75             rect = CGRectMake(0, 0, image.size.width, image.size.height);
76             translateX = 0;
77             translateY = 0;
78             break;
79     }
80
81     UIGraphicsBeginImageContext(rect.size);
82     CGContextRef context = UIGraphicsGetCurrentContext();
83
84     //做CTM变换
85     CGContextTranslateCTM(context, 0.0, rect.size.height);
86     CGContextScaleCTM(context, 1.0, -1.0);
87     CGContextRotateCTM(context, rotate);
88     CGContextTranslateCTM(context, translateX, translateY);
89     CGContextScaleCTM(context, scaleX, scaleY);
90
91     //绘制图片
92     CGContextDrawImage(context, CGRectMake(0, 0, rect.size.width, rect.size.height), image.CGImage);
93
94     UIImage *newPic = UIGraphicsGetImageFromCurrentImageContext();
95
96     return newPic;
97 }

UIImage 旋转和保存旋转 (转载)

时间: 2024-10-20 07:41:33

UIImage 旋转和保存旋转 (转载)的相关文章

如何旋转页面,PDF页面如何旋转并保存

一般情况下我们使用的PDF文件都是正的,但是不能排除会遇到有错误的PDF文件的时候,上次小编就看到了一个PDF页面是旋转的情况,PDF阅读器旋转页面是对所有页面进行操作,不能对单个页面进行操作,什么软件可以旋转一个页面呢,PDF编辑器可以这样做,那么如何旋转页面呢,一起来看看吧. 操作软件:迅捷PDF编辑器 1.打开运行迅捷PDF编辑器,在编辑器中打开需要修改的PDF文件.我们可以看到PDF文件的页面是旋转的. 2.打开文件后,选择编辑器中菜单栏里的文档,然后选择文档中的旋转页面,点击旋转页面工

[经典面试题]输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。

[题目] 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个排好序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1. [分析] 这道题最直观的解法并不难.从头到尾遍历数组一次,就能找出最小的元素,时间复杂度显然是O(N).但这个思路没有利用输入数组的特性,我们应该能找到更好的解法. 我们注意到旋转之后的数组实际上可以划分为两个排序的子数组,而且前面的子数组的元素都大于或者等于后面

【c语言】输入一个递增排序的数组的一个旋转,输出旋转数组中的最小元素

//旋转数组的最小数字 //题目:把一个数组最開始的若干个元素搬到数组的末尾.我们称之为数组的旋转. //输入一个递增排序的数组的一个旋转.输出旋转数组中的最小元素. //比如:数组{3.4,5,1,2}为{1,2.3.4.5}的一个旋转,最小元素是1. #include <stdio.h> #include <assert.h> int min_equ(int *src, int left, int right) { int i = 0; int ret = src[left];

IOS6屏幕旋转详解(自动旋转、手动旋转、兼容IOS6之前系统)

IOS6屏幕旋转详解(自动旋转.手动旋转.兼容IOS6之前系统) 转自:http://blog.csdn.net/cococoolwhj/article/details/8208991 概述: 在iOS6之前的版本中,通常使用 shouldAutorotateToInterfaceOrientation 来单独控制某个UIViewController的方向,需要哪个viewController支持旋转,只需要重写shouldAutorotateToInterfaceOrientation方法.

17、把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. NOTE:给出的所有元素都大于0,若数组大小为0,请返回0. eg: 输入 3 4 5 1 2 输出 1 思路:用二分法查找最小元素 三种情况: (1)rotateArray[mid] >rotateArray[high]: like:[x,x,x,6,x,x,2],此时最小数字一

平衡树讲解(旋转treap,非旋转treap,splay)

在刷了许多道平衡树的题之后,对平衡树有了较为深入的理解,在这里和大家分享一下,希望对大家学习平衡树能有帮助. 平衡树有好多种,比如treap,splay,红黑树,STL中的set.在这里只介绍几种常用的:treap和splay(其中treap包括旋转treap和非旋转treap). 一.treap treap这个词是由tree和heap组合而成,意思是树上的的堆(其实就是字面意思啦qwq).treap可以说是由二叉搜索树(BST)进化而来,二叉搜索树每个点满足它左子树中所有点权值都比它小,它右子

UIImage图片处理,旋转、截取、平铺、缩放等操作

有时候我们需要处理图片,比如改变大小,旋转,截取等等,所以今天说一说图片处理相关的一些操作.本文所说的方法都是写在UIImage的Category中,这样使用起来也方便:由于代码太多,这里就不贴具体实现代码了,大家可以去我的Github查看demo,效果如下: 颜色相关 1.根据颜色生成纯色图片就是根据制定的颜色生成一张纯色的图片 1 + (UIImage *)imageWithColor:(UIColor *)color; 使用方法,比如设置UIImageView的图片为红色纯图片: 1 se

android 照片旋转并保存

/** * 读取图片属性:旋转的角度 * @param path 图片绝对路径 * @return degree旋转的角度 */ public int readPictureDegree(String path) { int degree = 0; try { ExifInterface exifInterface = new ExifInterface(path); int orientation = exifInterface.getAttributeInt(ExifInterface.TA

C++读取、旋转和保存bmp图像文件编程实现

以前也遇到过bmp文件的读写.这篇博客很好,写的其他内容也值得学习. 参考:http://blog.csdn.net/xiajun07061225/article/details/6633938  学习