首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从核心数据加载的iPhone UIImage逆时针旋转90度.怎么修?

从核心数据加载的iPhone UIImage逆时针旋转90度,可以通过以下方法实现:

  1. 使用Core Graphics框架中的CGContextRef对象进行旋转操作。
代码语言:objc
复制
- (UIImage *)rotateImage:(UIImage *)image {
    CGImageRef imageRef = image.CGImage;
    CGFloat width = CGImageGetWidth(imageRef);
    CGFloat height = CGImageGetHeight(imageRef);
    
    CGContextRef bitmap = CGBitmapContextCreate(nil, width, height,
                                                CGImageGetBitsPerComponent(imageRef),
                                                CGImageGetBytesPerRow(imageRef),
                                                CGImageGetColorSpace(imageRef),
                                                CGImageGetBitmapInfo(imageRef));
    
    CGContextRotateCTM(bitmap, M_PI_2);
    CGContextDrawImage(bitmap, CGRectMake(0, 0, height, width), imageRef);
    
    CGImageRef rotatedImageRef = CGBitmapContextCreateImage(bitmap);
    UIImage *rotatedImage = [UIImage imageWithCGImage:rotatedImageRef];
    
    CGContextRelease(bitmap);
    CGImageRelease(rotatedImageRef);
    
    return rotatedImage;
}
  1. 使用UIGraphicsBeginImageContextWithOptions函数创建一个新的图像上下文,并使用CGContextRotateCTM函数进行旋转操作。
代码语言:objc
复制
- (UIImage *)rotateImage:(UIImage *)image {
    UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextRotateCTM(context, M_PI_2);
    [image drawAtPoint:CGPointMake(0, -image.size.width)];
    UIImage *rotatedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return rotatedImage;
}

这两种方法都可以实现从核心数据加载的iPhone UIImage逆时针旋转90度的效果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS:聊一聊UIImage几点知识

2、imageWithContentsOfFile:和initWithContentsOfFile:方法 这两个方法跟前一个方法一样都是完成文件加载图像功能。...但是不会经过系统缓存,直接文件系统中加载并返回。 顺便提一下,当收到内存警告时候,系统可能会将UIImage内部存储图像内存释放,下一次需要绘制时候会重新去加载。...下面是图像旋转和翻转完整代码: image UIImage+Rotate_Flip.h image UIImage+Rotate_Flip.m 以上只是实现了图像顺时针90°,逆时针90°,180°...至于任意角度旋转怎么实现?其实也很简单,留着给大家思考吧。...虽然我们可以通过orientation这种方法简单完成图像旋转,但是如果有时间的话还是建议大家尽量看一下那种通过transform来完成旋转代码,你会彻底搞清楚旋转矩阵是怎么回事儿。

1.2K20

SDWebImage源码阅读-第三篇

其实SDWebImage还支持UIButton图片加载缓存,UIImageViewHighlightedImage加载缓存,还有GIF加载缓存。...)开发一种旨在加快图片加载速度图片格式。...举例来说,如果拍摄时相机摆放角度为逆时针旋转90度(对应着EXIF值为8),拍摄出来图片显示效果为顺时针旋转了90度(这就好比在查看时相机又摆正了,实际上在windows下图片查看器显示为顺时针旋转了...至于相机摆放角度如何与EXIF值对应,请参照这篇文章《如何处理iOS中照片方向》,注意就是iphone初始方向是横屏home键在后侧情况。...图片EXIF信息会记录拍摄角度,SD会图片数据中读取出EXIF信息,由于EXIF值与方向一一对应(EXIF值-1 = 方向),那么就使用+ sd_exifOrientationToiOSOrientation

1.3K50

【IOS开发基础系列】SDWebImageDownloader专题

而NSURLCache每次都要把缓存raw  data 再转化为UIImage,就带来了数据处理和内存方面的更多操作。具体比较在这里。         ...;     2、加载大量图片时,SD会将图片进行解压(加快渲染速度,但是内存会增大差不多一倍),然后将解压后Image数据缓存在内存中,从而导致内存暴涨; 以下代码具有内存泄露问题:     // 原始方案...性能有关问题 http://www.myexception.cn/operating-system/578931.html (Good)iPhone - UIImage Leak, CGBitmapContextCreateImage...,发生内存猛增,直接闪退情况,简单说一下解决方案 http://www.myexception.cn/swift/2033029.html 关于SDWebImage加载高清图片导致app崩溃问题 http.../details/43481959 解决MWPhotoBrowser中SDWebImage加载大图导致内存警告问题 http://my.oschina.net/u/1244672/blog/510379

34520

iOS MachineLearning 系列(2)—— 静态图像分析之矩形识别

首先定义一些属性: // 要分析图片资源 let image = UIImage(named: "image2")!...= 0.1 return rectDetectRequest }() 其中VNDetectRectanglesRequest即是核心图片分析请求类,VNImageRequestHandler...2 - 关于VNDetectRectanglesRequest类 VNDetectRectanglesRequest类用来对核心分析请求进行定义,并且设置结果回调。...图片方向。 额外参数。 其中,图片数据源可以二进制数据加载,可以网络加载,可以CoreImage或CoreGraphics框架图片对象加载等等,这里不多赘述。...case rightMirrored = 7 // 逆时针旋转90度后镜像 case left = 8 // 逆时针旋转90度 } 额外参数可以配置为一个字典对象,提供更多图片数据,支持配置字段如下

57310

【IOS开发高级系列】异步绘制专题

1 图片处理 1.1 编辑图片几个方法 第一种 先用UIImage对象加载一张图片 然后转化成CGImageRef放到CGContext中去编辑 第二种 用CGImageCreate...(UIImage* image, 1.0) 返回图片数据量大很多.譬如,同样是读取摄像头拍摄同样景色照片, UIImagePNGRepresentation()返回数据量大小为199K ,而 UIImageJPEGRepresentation...(UIImage* image, 1.0)返回数据量大小只为140KB,比前者少了50多KB.如果对图片清晰度要求不高,还可以通过设置 UIImageJPEGRepresentation函数第二个参数...,大幅度降低图片数据量.譬如,刚才拍摄图片, 通过调用UIImageJPEGRepresentation(UIImage* image, 1.0)读取数据时,返回数据大小为140KB,但更改压缩系数后...,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)读取数据时,返回数据大小只有11KB多,大大压缩了图片数据量 ,而且视角角度看,图片质量并没有明显降低

1.3K20

【IOS开发进阶系列】手势专题

1 touchesBegan手势         iPhone中处理触摸屏操作,在3.2之前是主要使用是由UIResponder而来的如下4种方式:     - (void)touchesBegan...缩放和旋转有点问题,估计是因为在模拟器上模拟两个接触点距离在imageView边界外了,所以操作无效果。建议在真机上运行这个手势。         ...不过这个点击播放声音有点缺陷,就是在慢慢拖动时候也会播放。这使得两个手势重合了。怎么解决呢?使用手势:requireGestureRecognizerToFail方法。...UIRotationGestureRecognizer 旋转手势 属性: rotation:初始值为0,两手指旋转弧度,顺时针旋转为正数,逆时针旋转为负数。...velocity:初始值为0手指一动相对速度,顺时针为正数越快值越大;逆时针为负越快越小。

32940

IOS开发系列——异步绘制专题

异步绘制专题 1 图片处理 1.1 编辑图片几个方法 第一种 先用UIImage对象加载一张图片 然后转化成CGImageRef放到CGContext中去编辑 第二种 用CGImageCreate...(UIImage*image, 1.0) 返回图片数据量大很多.譬如,同样是读取摄像头拍摄同样景色照片, UIImagePNGRepresentation()返回数据量大小为199K ,而 UIImageJPEGRepresentation...(UIImage* image, 1.0)返回数据量大小只为140KB,比前者少了50多KB.如果对图片清晰度要求不高,还可以通过设置 UIImageJPEGRepresentation函数第二个参数...,大幅度降低图片数据量.譬如,刚才拍摄图片, 通过调用UIImageJPEGRepresentation(UIImage*image, 1.0)读取数据时,返回数据大小为140KB,但更改压缩系数后...,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)读取数据时,返回数据大小只有11KB多,大大压缩了图片数据量 ,而且视角角度看,图片质量并没有明显降低

1.4K20

iOS动画开发之五——炫酷粒子效果 原

iOS动画开发之五——炫酷粒子效果         在上几篇博客中,我们对UIView层动画以及iOS核心动画做了介绍,基本已经可以满足iOS应用项目中所有的动画需求,如果你觉得那些都还不够炫酷...    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//发射器中发出 CA_EXTERN NSString * const kCAEmitterLayerOutline...    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//发射器表面发出 CA_EXTERN NSString * const kCAEmitterLayerVolume...    __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);//发射器中点发出 @property(copy) NSString *renderMode...@property float scale;     粒子缩放大小 @property float spin;     粒子旋转位置 @property unsigned int seed;

1.2K20

OPengL ES _ 着色器_实战1

学习是一件开心额事情 学习目标 使用着色器渲染一张图片 ---- 核心步骤 创建着色器程序 加载顶点坐标 加载纹理坐标 加载纹理 绘制 ---- 代码讲解 1.由于着色器编译 链接过程较为繁琐,我封装了一下...,标记为位置 glEnableVertexAttribArray(GLKVertexAttribPosition); // 第五步.告诉GPU 顶点数据在内存中格式是怎么,应该如何去使用 glVertexAttribPointer...纹理坐标系 纹理坐标系S 轴和 T 轴取值范围都为[0,1] ,这张图应该能够明白大体怎么使用吧! 问题:如何加载纹理坐标数据?...GL_STATIC_DRAW); // 第四步 .启用这块内存,标记为位置 glEnableVertexAttribArray(GLKVertexAttribTexCoord0); // 第五步.告诉GPU 顶点数据在内存中格式是怎么...我们先用下面下面这段代码获取图片像素数据 - (void*)getImageData:(UIImage*)image{ CGImageRef imageRef = [image CGImage];

48720

移动端图片上传旋转、压缩解决方案

前言 在手机上通过网页 input 标签拍照上传图片,有一些手机会出现图片旋转了90度问题,包括 iPhone 和个别三星手机。这些手机竖着拍时候才会出现这种问题,横拍出来照片就正常显示。...旋转角度 参数值 0° 1 顺时针90° 6 逆时针90° 8 180° 3 参数为 1 时候显示正常,那么在这些横拍显示正常,即 Orientation = 1 手机上,竖拍参数为 6。...exif.js 功能很多,体积也很大,未压缩之前足足有 30k,这对手机页面加载来说是非常大影响。...旋转之后,如果 ( 0, 0 ) 点进行 drawImage(),那么画出来位置就是在左图中旋转 90 度后位置,不在可视区域呢。...总结 综合以上,例子代码包括精简exif.js库地址:file-demo 主要核心代码如下: <img src="blank.gif

4.7K60

移动端图片上传旋转、压缩解决方案

前言 在手机上通过网页 input 标签拍照上传图片,有一些手机会出现图片旋转了90度问题,包括 iPhone 和个别三星手机。这些手机竖着拍时候才会出现这种问题,横拍出来照片就正常显示。...旋转角度 参数值 0° 1 顺时针90° 6 逆时针90° 8 180° 3 参数为 1 时候显示正常,那么在这些横拍显示正常,即 Orientation = 1 手机上,竖拍参数为 6。...exif.js 功能很多,体积也很大,未压缩之前足足有 30k,这对手机页面加载来说是非常大影响。...旋转之后,如果 ( 0, 0 ) 点进行 drawImage(),那么画出来位置就是在左图中旋转 90 度后位置,不在可视区域呢。...总结 综合以上,例子代码包括精简exif.js库地址:file-demo 主要核心代码如下: <img src="blank.gif

2.8K20

【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

获取 PList Bundle 路径 | ⑤ PList -> 数组 ) ( 2 ) 懒加载 优化 ( ① 在 get 方法中加载数据 | ② 如果为 空 才 加载 ) 八....) UIImage 内存分析 ( ① 使用 UIImage imageNamed:图片名称 加载图片 | ② 使用 UIImage imageWithContentsOfFile:Bundle路径名 加载图片...; // ① 获取对应数据 字典 NSMutableDictionary * d = self.pics[self.index - 1]; 5. NSMutableDictionary...属性为 空时 才开始 list 中 初始化 数据 if(_pics == nil){ // 1....imageNamed 方法 加载图片 , 不会释放 ; ---- ( 2 ) UIImage 内存分析 ( ① 使用 UIImage imageNamed:图片名称 加载图片 | ② 使用 UIImage

3.5K40

YYImage框架瞧一瞧

它扩展了UIImage 支持动画WebP, APNG和GIF格式图像数据解码。它还 支持NSCoding协议,以存档和反存档多帧图像数据。...a、animatedImageMemorySize 如果所有帧图像都被加载到内存中,那么总内存使用(以字节为单位)。 如果图像不是多帧图像数据创建,则该值为0。...3、YYImage 意义(图片解码原因) 磁盘中加载一张图片,并将它显示到屏幕上,这个过程其实经历很多,非常耗性能。随着显示图片增加,性能下降尤其明显。...我们先看下显示到屏幕这个过程工作流: 1、我们使用+[UIImage imageWithContentsOfFile:]方法磁盘中加载一张图片。此时,图片还没有被解码,仍旧是编码状态下。...b.文件数据磁盘读取到内存。

2.1K30

玩转前端图片上传

确实是这样,但是,我们想要做得更加友好一些,比如需要过滤掉非图片文件, 或只允许摄像头拍照获取图片等,还是需要进行一些简单配置。...但是之前在 iPhone 和 小米 手机上,遇到一个奇怪问题:就是我使用前置摄像头自拍出来照片,选择之后 ,会自逆时针旋转 90 度,比如像下图: ?...我刚刚试了一下,发现我 iPhone 现在竟然不会有这个问题了,大概是半年前,当时在做一个需求时,自拍图片会发生这种旋转,有可能是 iOS 系统升级后, 已经修复了这个问题。...img 可以看出,摄像头信息是逆时针旋转了 90 度。那要怎么纠正呢?可以使用 CSS transfrom: rotate(-90deg) 顺时针旋转 90 度抵消掉这个角度就好。...有个 CSS 属性叫做 image-orientation , 它有个值叫做 from-image , 就是使用图片 EXIF 数据旋转。可惜,目前 chrome 不支持该属性。

3K21

iOS开发-OpenGL ES魔方应用

把渲染值FBO读取到CPU控制内存需要花费时间执行耗时同步操作。 拾取在每秒中可能发生多次,会影响渲染。...2、几何拾取 设想一个光线平截体近平面上一个触摸位置头投射向这个位置对应远平面的点。被这个光线穿过离视点最近对象就是要拾取对象。...不需要读取FBO渲染值,通过触摸视口坐标和平截体,可形成光线。 核心思路 魔方直接渲染到屏幕,拾取时候再渲染一次到FBO,通过拾取结果决定是旋转某一列还是旋转整个魔方。...4、文字显示 加载一张含有多个文字图片,通过在上面选定区域来显示文字(无法显示中文)。 思考1:是否存在替代做法?...思考 1、替代做法:文字直接添加到UILabel,UILabel绘制成纹理,再加载到OpenGL ES。 2、如果添加是纹理,颜色变量无法携带位置信息。

1.4K90
领券