iOS 读取图片的各种方法
来源:互联网 发布:centos终端能输入中文 编辑:程序博客网 时间:2024/04/30 11:59
出处:http://blog.sina.com.cn/s/blog_a843a8850101flo3.html
一.读取图片
1.从资源(resource)读取
[cpp] view plaincopyprint?
- UIImage*
image=[UIImage "1.jpg"];imageNamed:@
2.从网络读取
[cpp] view plaincopyprint?
- NSURL
*url=[NSURL "http://www.sinaimg.cn/qc/photo_auto/chezhan/2012/50/00/15/80046_950.jpg"];URLWithString:@ - UIImage
*imgFromUrl =[[UIImage alloc]initWithData:[NSData dataWithContentsOfURL:url]];
3.从手机本地读取
[cpp] view plaincopyprint?
- //读取本地图片非resource
- NSString
*aPath3=[NSString stringWithFormat:@"%@/Documents/%@.jpg",NSHomeDirectory(),@"test"]; - UIImage
*imgFromUrl3=[[UIImage alloc]initWithContentsOfFile:aPath3]; - UIImageView*
imageView3=[[UIImageView alloc]initWithImage:imgFromUrl3];
[cpp] view plaincopyprint?
- //add
ImageIO.framework and #import - CGImageSourceRef
source = CGImageSourceCreateWithU RL((CFURLRef)url, NULL); - CGImageRef
img= CGImageSourceCreateImage AtIndex(source,0,NULL); - CGContextRef
ctx=UIGraphicsGetCurrentCont ext(); - CGContextSaveGState(ctx);
- //transformCTM的2种方式
- //CGContextConcatCTM(ctx,
CGAffineTransformMakeSca le(.2, -0.2)); - //CGContextScaleCTM(ctx,1,-1);
- //注意坐标要反下,用ctx来作为图片源
- CGImageRef
capture=CGBitmapContextCreateIma ge(ctx); - CGContextDrawImage(ctx,
CGRectMake(160, 0, 160, 230), [image CGImage]); - CGContextDrawImage(ctx,
CGRectMake(160, 230, 160, 230), img); - CGImageRef
capture2=CGBitmapContextCreateIma ge(ctx);
5.用Quartz的CGImageSourceRef来读取图片
[cpp] view plaincopyprint?
- CGImageSourceRef
source = CGImageSourceCreateWithU RL((CFURLRef)url, NULL); - CGImageRef
img= CGImageSourceCreateImage AtIndex(source,0,NULL);
二.保存图片
1.转换成NSData来保存图片(imgFromUrl是UIImage)
[cpp] view plaincopyprint?
- //保存图片
2种获取路径都可以 - //NSArray*paths=NSSearchPathForDirectori
esInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - //NSString*documentsDirectory=[paths
objectAtIndex:0]; - //NSString*aPath=[documentsDirectory
stringByAppendingPathCom ponent:[NSString stringWithFormat:@"%@.jpg",@"test"]]; - NSString
*aPath=[NSString stringWithFormat:@"%@/Documents/%@.jpg",NSHomeDirectory(),@"test"]; - NSData
*imgData = UIImageJPEGRepresentatio n(imgFromUrl,0); - [imgData
writeToFile:aPath atomically:YES];
2.用Quartz的CGImageDestinationRef来输出图片,这个方式不常见,所以不做介绍,详细可以看apple文档Quartz 2D Programming Guide
三.绘制图(draw|painting)
1.UIImageView方式加入到UIView层
[cpp] view plaincopyprint?
- UIImageView*
imageView=[[UIImageView alloc]initWithImage:image]; - imageView.frame=CGRectMake(0,
0, 320, 480); - [self
addSubview:imageView]; - [imageView
release];
[cpp] view plaincopyprint?
- [image4
drawAtPoint:CGPointMake(100, 0)];
[cpp] view plaincopyprint?
- CGContextDrawImage(ctx,
CGRectMake(160, 0, 160, 230), [image CGImage]);
4.CGLayer
这个是apple推荐的一种offscreen的绘制方法,相比bitmapContext更好,因为它似乎会利用iphone硬件(drawing-card)加速
[cpp] view plaincopyprint?
- CGLayerRef
cg=CGLayerCreateWithContext (ctx, CGSizeMake(320, 480), NULL); - //需要将CGLayerContext来作为缓存context,这个是必须的
- CGContextRef
layerContext=CGLayerGetContext(cg); - CGContextDrawImage(layerContext,
CGRectMake(160, 230, 160, 230), img); - CGContextDrawLayerAtPoin
t(ctx, CGPointMake(0, 0), cg);
5.CALayer的contents
[cpp] view plaincopyprint?
- UIImage*
image=[UIImage "1.jpg"];imageNamed:@ - CALayer
*ly=[CALayer layer]; - ly.frame=CGRectMake(0,
0, 320, 460); - ly.contents=[image
CGImage]; - [self.layer
addSublayer:ly];
四.其它
1.CGImage和UIImage互换
这样就可以随时切换UIKit和Quartz之间类型,并且选择您熟悉的方式来处理图片.
CGImage cgImage=[uiImage CGImage];
UIImage* uiImage=[UIImage imageWithCGImage:cgImage];
0 0
- iOS 读取图片的各种方法
- iOS 读取图片的各种方法
- iOS 读取图片的各种方法
- 读取图片的方法
- ios 读取数据库中的图片方法
- tensorflow读取图片的方法
- java 读取 properties文件的各种方法
- java各种读取文件的方法
- vc 各种读取txt文件的方法
- Java中的各种读取键盘输入的方法
- iOS处理图片的各种模糊效果
- 各种文件读取方法
- 转载的图片处理的各种方法
- iOS读取图片数据的两种方法:UIImageJPEG和UIImagePNG
- IOS 各种截屏方法及保存图片
- android 图片处理的各种方法
- 【iOS】一个方法读取图片中的二维码信息
- ios 读取各种类型文件
- 为项目编写README.md文件
- setTimeout()和setInterval() 何时被调用执行
- Android酷炫实用的开源框架(UI框架)
- 机器学习 之 一句话解释 关键概念
- 运用JS设置cookie、读取cookie、删除cookie
- iOS 读取图片的各种方法
- Android Studio使用OpenCV的配置方法
- xml和json相互转换的代码
- stm32Flash模拟eeprom心得(原创)
- OJ 嘻刷刷 我想放假
- Qt Project Build error PRJ0019: 工具从"Moc'ing xxx.h..."
- NSDictionary或NSArray与JSON字符串相互转换
- iptables 只拒绝某个ip的所有连接
- settimeout计时器实例