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

    

}

最新文章

  1. python面向对象个人总结
  2. java常用算法
  3. addAll()报NullPointer原因
  4. ajax与Servlet
  5. PHP JSON_ENCODE 不转义中文汉字的方法
  6. 【SICP读书笔记(五)】练习2.32 --- 递归求集合子集
  7. PHP添加Mssql/sqlserver2000扩展,适用于Php5.2/Php5.3/Php5.4
  8. Hibernate注解配置与XML配置区别
  9. 查看 Apache并发请求数及其TCP连接状态【转】
  10. Linq to SQL 中实现模糊查询
  11. 计蒜客 数字解码 dp
  12. idea安装proto插件后不能识别.proto文件解决方案
  13. WordPress版微信小程序2.4版发布
  14. python爬虫之scrapy
  15. SPARK安装一:Windows下VirtualBox安装CentOS
  16. jquery为表格行添加上下移动画效果
  17. 关于PHP程序员技术职业生涯规划[转]
  18. Kafka入门经典教程【转】
  19. BZOJ 1934 Vote 善意的投票(最小割+二分图)
  20. UWP Xaml设计器中输入特殊字符

热门文章

  1. iframe控件
  2. 你真的精通Java吗?
  3. 《深入Java虚拟机学习笔记》- 第15章 对象和数组
  4. SQL Server 2005如何远程连接数据库?
  5. Pyhton 一行代码求Fibonacci第N项
  6. 5.2 CUDA Histogram直方图
  7. 恒天云技术分享系列2 - vlan管理GUI开发
  8. HW6.22
  9. algorithm@ 大素数判定和大整数质因数分解
  10. Bzoj-2818 Gcd 欧拉函数