iOS_UIImage_图片旋转
一.目的:
有时候我们获得到的图片我们不是我们想要的方向,需要对图片进行旋转.比如:图片旋转90度180度等.
二.实现过程.
1.获取到该UIImage.
2.开启上下文.
3.上下文的具体操作.
4. 将上下文转化为想要的UIImage
三.UIImage 的 Category
UIImage+ImageRotate.h
#import <UIKit/UIKit.h> @interface UIImage (ImageRotate) - (UIImage *)imageRotateWithIndegree:(CGFloat)indegree; @end
UIImage+ImageRotate.m
#import "UIImage+ImageRotate.h"
#import <QuartzCore/QuartzCore.h>
#import <Accelerate/Accelerate.h> @implementation UIImage (ImageRotate) #pragma mark - 图片旋转 // 1 image --> Context 2. context 3. context --> image - (UIImage *)imageRotateWithIndegree:(CGFloat)indegree { // 1. image --> context
size_t width = (size_t)(self.size.width * self.scale);
size_t height = (size_t)(self.size.height * self.scale); size_t bytesPerRow = width * ; // 每行图片字节数
CGImageAlphaInfo alphaInfo = kCGImageAlphaPremultipliedFirst; // alpha // 配置上下文
// CGColorRef bmContext = CGBitmapContextCreate(<#void * _Nullable data#>, <#size_t width#>, <#size_t height#>, <#size_t bitsPerComponent#>, <#size_t bytesPerRow#>, <#CGColorSpaceRef _Nullable space#>, <#uint32_t bitmapInfo#>)
CGContextRef bmContext = CGBitmapContextCreate(NULL, width, height, , bytesPerRow, CGColorSpaceCreateDeviceRGB(), kCGBitmapByteOrderDefault | alphaInfo); if (!bmContext) {
return nil;
} CGContextDrawImage(bmContext, CGRectMake(, , width, height), self.CGImage); // 2. 旋转
UInt8 * data = (UInt8 *)CGBitmapContextGetData(bmContext); // 需要引入 #import <Accelerate/Accelerate.h> 解释这个类干什么用的
vImage_Buffer src = {data,height,width,bytesPerRow};
vImage_Buffer dest = {data,height,width,bytesPerRow};
Pixel_8888 bgColor = {,,,};
vImageRotate_ARGB8888(&src, &dest, NULL, indegree, bgColor, kvImageBackgroundColorFill); // 3. context --> UIImage
CGImageRef rotateImageRef = CGBitmapContextCreateImage(bmContext);
UIImage * rotateImage = [UIImage imageWithCGImage:rotateImageRef scale:self.scale orientation:self.imageOrientation]; CGContextRelease(bmContext);
CGImageRelease(rotateImageRef); return rotateImage;
} @end
四.使用
UIImage * image = [image imageRotateWithIndegree:M_PI / 2];
github地址: https://github.com/mancongiOS/UIImage.git
iOS_UIImage_图片旋转的更多相关文章
- 自己积累的一些Emgu CV代码(主要有图片格式转换,图片裁剪,图片翻转,图片旋转和图片平移等功能)
using System; using System.Drawing; using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; na ...
- PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转
[强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...
- js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能
html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...
- jQuery图片旋转展示收缩效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Rotating Image Slider - 图片旋转切换特效
非常炫的图片旋转滑动特效,相信会给你留下深刻印象.滑动图像时,我们会稍稍旋转它们并延缓各元素的滑动.滑块的不寻常的形状是由一些预先放置的元素和使用边框创建.另外支持自动播放选项,鼠标滚轮的功能. 在线 ...
- JQuery插件让图片旋转任意角度且代码极其简单
引入下方的jquery.rotate.js文件,然后通过$("选择器").rotate(角度);可以旋转任意角度, 例如$("#rotate-image").r ...
- HTML5图片旋转
HTML5图片旋转 首先我们使用Cococs2dx-Js-Lite版,来创建一个工程,我们所需要的开发环境如下: 1,webstrom 2,google chrome浏览器 3,cocos2dx-Js ...
- Android提高篇之自定义dialog实现processDialog“正在加载”效果、使用Animation实现图片旋转
知识点: 1.使用imageview.textview自定义dialog 2.使用Animation实现图片旋转动画效果 3.通过自定义theme去掉dialog的title 没有使用progres ...
- 基于HTML5+CSS3的图片旋转、无限滚动、文字跳动特效
本文分享几种基于HTML5+CSS3实现的一些动画特效:图片旋转.无限滚动.文字跳动;实现起来均比较容易,动手来试试! 一.图片旋转 效果图如下: 这个效果实现起来其实并不困难.代码清单如下: < ...
随机推荐
- 3.一起来学hibernate之配置文件2
之前的映射文件配置都是简单的.基础的配置,只涉及到单个javabean,对于单个javabean的增删改查都能很好的.简单的去完成. 但是知道简单配置远远不够,并不能完成很多复杂的情况,比如对象与对象 ...
- Canny边缘检测及图像缩放之图像处理算法-OpenCV应用学习笔记四
在边缘检测算法中Canny颇为经典,我们就来做一下测试,并且顺便实现图像的尺寸放缩. 实现功能: 直接执行程序得到结果如下:将载入图像显示在窗口in内,同时进行图像两次缩小一半操作将结果显示到i1,i ...
- 美帝的emal to message gateway
Provider Email to SMS Address Format AllTel number@text.wireless.alltel.com AT&T number@txt.att. ...
- poj1083
The famous ACM (Advanced Computer Maker) Company has rented a floor of a building whose shape is in ...
- linux编译php的c扩展
第一步:安装php5 第二步:打开终端[为来方便,这里使用root用户],使用CD命令进入到php5源码包的ext目录 第三步:在终端键入以下命令 ./ext_skel --extname=extes ...
- MediaWiki安装与配置(Ubuntu 10.4)
实验室准备发布一个网站,本来是准备外包给别人做的,后来自己调研了一下,发现也没有想象的复杂和困难,于是最近一周自己吭哧吭哧地把网站搭好了. 之所以使用Mediawiki,一是考虑到是以实验室发布,不想 ...
- T4模版基础例子
<#@ template debug="false" hostspecific="true" language="C#" #> ...
- Xamarin跨平台移动开发解决方案
Xamarin始创于2011年,旨在使移动开发变得难以置信地迅捷和简单.Xamarin的产品简化了针对多种平台的应用开发,包括iOS.Android.Windows Phone和Mac App.Xam ...
- Microsoft .NET Native Developer Preview 内部初探(1)
Microsoft .NET Native Developer Preview 内部初探(1) MS 前段时间发布了.NET Native Developer Preview,被广大人员赋予“C++的 ...
- Android SDK content Loader has encountered a problem.parseSdkContent failed
打开Eclipse,弹出Android SDK content Loader has encountered a problem.parseSdkContent failed,当点击detail按钮, ...