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

iOS:聊一聊UIImage几点知识

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

1.3K20

SDWebImage源码阅读-第三篇

其实SDWebImage还支持UIButton的图片加载缓存,UIImageView的HighlightedImage的加载缓存,还有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

    77520

    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度 } 额外参数可以配置为一个字典对象,提供更多图片数据,支持配置的字段如下

    71010

    【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开发进阶系列】手势专题

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

    51740

    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.5K20

    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.3K20

    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];

    53120

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

    前言 在手机上通过网页 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.9K60

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

    前言 在手机上通过网页 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.9K20

    【 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

    4K40

    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 不支持该属性。

    3.1K21

    iOS开发-OpenGL ES魔方应用

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

    1.5K90
    领券