IOS中对图片的处理 UIImage

UIImage 继承于NSObject

以下介绍一下UIImage中的方法

首先是我们最经常使用的



通过图片的文件名称来获取这个图片

+ (UIImage *)imageNamed:(NSString *)name

//要注意的是这种方法适用于已经导入到project中的图片

//建议使用该方法获取图片(尤其是ios8系统下)

NSString *imagePath = [[NSBundle mainBundle]pathForResource:@"sun" ofType:@"png"];

UIImage *image = [[UIImage alloc]initWithContentsOfFile:imagePath];

1、+ (UIImage *)imageWithContentsOfFile:(NSString *)path

//通过文件载入指定路径下的文件内容获得新图片



2、+ (UIImage *)imageWithData:(NSData *)data

//通过一个NSData对象来获得图片

3、+ (UIImage *)imageWithData:(NSData *)data scale:(CGFloat)scale

//同上,仅仅是再加上一个图片大小比例,用来改变图片的大小



4、+ (UIImage *)imageWithCGImage:(CGImageRef)cgImage

//使用Quartz 2D对象创建UIImage

5、+ (UIImage *)imageWithCGImage:(CGImageRef)imageRef scale:(CGFloat)scale orientation:(UIImageOrientation)orientation

//制定图片的比例和方向。当中方向是个枚举类。



6、+ (UIImage *)imageWithCIImage:(CIImage *)ciImage

//用一个Core Image 对象创建图像

7、+ (UIImage *)imageWithCIImage:(CIImage *)ciImage scale:(CGFloat)scale orientation:(UIImageOrientation)orientation

//再加上比例和图片方向



8、- (UIImage *)imageWithAlignmentRectInsets:(UIEdgeInsets)alignmentInsets

//返回指定矩形区域内的图像



9、+ (UIImage *)animatedImageNamed:(NSString *)name duration:(NSTimeInterval)duration

//创建一个动态图片。动态图片持续的时间为duration

10、+ (UIImage *)animatedImageWithImages:(NSArray *)images duration:(NSTimeInterval)duration

//用一组图片创建一个动态图片。动态持续时间duration



11、+ (UIImage *)animatedResizableImageNamed:(NSString *)name capInsets:(UIEdgeInsets)capInsets duration:(NSTimeInterval)duration

//创建一个在可变大小的图片上指定矩形区域内的动态图片

12、+ (UIImage *)animatedResizableImageNamed:(NSString *)name capInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode duration:(NSTimeInterval)duration

//同上,仅仅是多了一个图片变化的方式。详细来说就是平铺或者拉伸



13、- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets

//用制定矩形区域创建图像

14、- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode

//同上。指定图片变化方式

初始化图片

方法的作用在从上面的一些方法中都能找到原型,这里就不一一凝视了

1、– initWithContentsOfFile: //从文件载入图片

2、– initWithData: //用NSData对象初始化图片

3、– initWithData:scale: //用NSData对象,指定的比例,初始化图片

4、– initWithCGImage:

5、– initWithCGImage:scale:orientation:

6、– initWithCIImage:

7、– initWithCIImage:scale:orientation:

绘绘图片

1、– drawAtPoint:

//在指定的点開始绘绘图片,这个点就是图片的做上角顶点

2、- (void)drawAtPoint:(CGPoint)point blendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha

//在指定的点绘制整个图片,并使用自己定义图片复合模式,并设置透明度



3、– drawInRect:

//在指定区域内绘制图片,可依据须要缩放图片

4、– drawInRect:blendMode:alpha:

//參照上面第二条

5、– drawAsPatternInRect:

//在指定区域内,平铺图片





image的属性

imageOrientation //图片的方向

size //图片的大小size

scale //图片的比例

resizingMode //图片变化方式

CGImage //潜在的Quartz image

CIImage //潜在的Core Image

images //返回一个由图片组成的数组,针对于由一组图片生成的动态图片

duration //返回动态图片持续的时间(即动态图片播放一遍的时间)

capInsets //图片上选定的区域

alignmentRectInsets //图片平铺的区域

//批量上传图片

+(void)requestWithUrl:(NSString *)url params:(NSDictionary *)params picImageArray:(NSArray *)imageArry fileName:(NSArray *)fileNameArray success:(requestSuccess)successBlock progressBlock:(progerss)progress fail:(requestFail)failBlock

{

    if (url==nil) { //给一个默认的把。

。老是写好烦

        url=kTDGeneralURL;

    }

    AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];

    AFHTTPRequestOperation* operation= [manager POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

        if (imageArry) {

            for (int i=0; i<imageArry.count; i++) {

                NSData *picData = UIImageJPEGRepresentation(imageArry[i], 1);

                [formData appendPartWithFileData:picData name:fileNameArray[i] fileName:@"image.jpg" mimeType:@"application/octet-stream"];

            }

        }

    } success:^(AFHTTPRequestOperation *operation, id responseObject) {

        if ([responseObject isKindOfClass:[NSDictionary class]]) {

            successBlock(responseObject);

        }

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

        

        failBlock(error);

    }];

    

    [operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {

        

        CGFloat pro=totalBytesWritten/(CGFloat)totalBytesExpectedToWrite;

        

        if (progress) {

            progress(pro);

        }

        

    }];

    

    

    [operation start];

    

}

IOS - UIImage的更多相关文章

  1. iOS - 单例传值 (一)

    点击打开链接    iOS - 单例传值 (二) 单例只会对某个类实例化一次/单例类,对单例这个类实例化一次有且仅有一个对象 你单例初始化,只能初始化一次,然后你指向的对象,其实都是指向一个内存地址, ...

  2. iOS-如何使用symbolicatecrash

    iOS-如何使用symbolicatecrash 如何使用symbolicatecrash工具分析iOS Crash文件: 原文地址:[iOS Crash文件分析]-如何使用symbolicatecr ...

  3. iOS-函数式编程 && 响应式编程概念

    作为一个iOS developer,那么你一定用过Masnory / SnapKit: Masonry是一个OC开发中,非常好用的自动布局的第三方框架: SnapKit是Masonry团队打造的swi ...

  4. iOS-Code Data多线程的封装详解

    Code Data 的单例封装:      很容易发现,系统生成的模版代码将Core Data 的基本的准备(貌似还挺复杂!)都放在 AppDelegate中了,可苹果公司为什么会这么做呢?     ...

  5. iOS-UIViewController创建的几种方法和UIWindow的介绍

    在上一篇笔记中<iOS-程序启动原理和UIApplication>,http://blog.csdn.net/yang198907/article/details/49735531 在程序 ...

  6. iOS 根据UIImage 修改UIImageView Frame (包括截取图片中间部分)

    iOS UIImageView 根据需求调整frame 1.图片的宽和高不相等,截取图片的中间部分,截取的部分Size明确 2.图片的宽度要等于其父视图的类的宽度,然后根据宽度计算高度,保证 图片不变 ...

  7. iOS - 滑屏方案

    参考自:iOS开发- 通过ChildViewCotroller ViewController容器 产品增加新的版面,类似于网易新闻,百度新闻,腾讯新闻等新闻客户端首页多屏幕滑屏切换,找了一些开源代码研 ...

  8. 照片大管家iOS-实现本地相册、视频、安全保护、社交分享一站式功能,源码开放

    <照片大管家> APP功能: 1.本地照片批量导入与编辑 2.本地视频存储与播放 3.手势密码.数字密码.TouchID安全保护 4.QQ.微信.微博.空间社交分享 5.其他细节功能. 运 ...

  9. ios的UIImage的两种不同的图片加载方式 tom猫

    在ios的UI交互设计时,对图片的处理是难免的:不同的处理方式会对内存有不同的影响: ********************************************************* ...

随机推荐

  1. sencha touch2 动画问题

    最近在review一个项目的代码, 发现返回操作比较乱,很多"从哪里来,到哪里去的操作"被写的一塌糊涂; 按照ios系统的进场出场动画(人家的体验还是很好的,必须借鉴)为标准,使用 ...

  2. APIO2010特别行动队(单调队列、斜率优化)

    其实这题一看知道应该是DP,再一看数据范围肯定就是单调队列了. 不过我还不太懂神马单调队列.斜率优化…… 附上天牛的题解:http://www.cnblogs.com/neverforget/arch ...

  3. hibernate注解影射表

    @MappedSuperclass的用法 用在实体的继承过程中的父类上: 父类Cat package com.xj.model; import javax.persistence.GeneratedV ...

  4. android应用分析之apk文件结构

            实际上,一个APK文件就是一个.zip格式的压缩包,我们可以用解压缩工具打开任何一个APK文件,由于代码混淆和加密,通过普通解压缩工具打开里面的文件或目录会看到各种乱码.一个典型的ap ...

  5. jquery页面无刷新切换皮肤并保存

    效果体验:http://runjs.cn/detail/hijgcghe <!DOCTYPE html> <html> <head> <meta http-e ...

  6. Spring入门之HelloSpring

    Spring描述: -轻量级:Spring是非侵入式的-基于Spring开发的应用中的对象可以不依赖于Spring的API -依赖注入(DI---dependency injection,IOC) - ...

  7. SharePoint 2010 使用自定义aspx页面替换列表默认的新建(NewForm.aspx),查看(DispForm.aspx)和编辑(EditForm.aspx)页面

    转:http://www.cnblogs.com/sygwin/archive/2011/11/04/2236678.html 如何使用自定义的aspx页(比如Application Page)替换列 ...

  8. 【JMeter】JMeter完成一个java请求的压测

    先定义一下我说的remoteService:即远程调用服务,没有http的url.不对外提供或者对外提供有限的服务.具体视各公司的代码架构所定,比如有些公司为web工程,scf服务,db.scf即为服 ...

  9. HDU 5700 区间交 线段树暴力

    枚举左端点,然后在线段树内,更新所有左边界小于当前点的区间的右端点,然后查线段树二分查第k大就好 #include <cstdio> #include <cstring> #i ...

  10. Chrome 浏览器跨域和安全访问问题 使用 chrome的命令行标记:disable-web-security 参数联调线上数据

    做前端的,用Ajax获取数据,是常有的事情,同域下自然没问题了,如果是不同域获取数据,浏览器就有个同源策略的限制. 如图: Origin * is not allowed by Access-Cont ...