注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

尐鬼じ☆ve伱

和你在一起的日子

 
 
 

日志

 
 

iPhone开发中的图像处理相关要点 (转)  

2012-06-12 16:55:35|  分类: ios 开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://www.cnblogs.com/lovecode/archive/2011/11/27/2265275.html

iPhone图像通常存储在以下4个地方:

  • 相册(PhotoAlums):用户可以使用UIImagePickerController类提供的交互对话框从该相册中获取图像。
  • 应用程序包:将图像与可执行程序、Info.plist文件和其他资源一同存储,用户可以通过本地文件路径由imageNamed:方法来读取这些基于包的图像。
  • 沙盒:借助沙盒,可以将文件存储到Documents、Library和tmp文件夹中。
  • 因特网(Internet):应用程序可通过URL资源从网上下载图像。

 图像文件的位置决定着读取该文件的具体方式。相册中的图片及其路径无法直接从应用程序访问,只有终端用户能够浏览和选择图像,使所选图像对应用程序可用。图像也不能由URL直接初始化。图像源不同读取方式也不同:

1. 从应用程序包加载图像

UIImage类提供了一种加载应用程序包中存储的任意图像的简单方法,即通过文件名及其扩展名调用imageNamed:方法。

myImage = [UIImage imageNamed:@"icon.png"];

 为避免本地图像缓存及其有效利用内存空间的问题,还可用imageWithContentsOfFile:替换,这个方法会返回从某一具体路径中加载的图像,这个路径需以参数形式提供。当然,若要从应用程序包中获取图像路径,可以查询NSBundle类为给定资源查找路径。示例代码:

NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"];
myImage = [UIImage imageWithContentsOfFile:path];

2. 从沙盒加载图像

默认情况下,每个沙盒包含3个文件夹:Documents、Library和tmp。图像等由应用程序生成的数据通常位于Documents文件夹内。在iPhone开发中可以通过调用实用工具主目录函数可靠地定位顶级沙盒文件夹。通过NSHomeDirectory()返回结果,我们可以向下导航一级到Documents文件夹,完全可以保证正确的位置。示例代码:

复制代码
NSString *documentsFolder()
{
return [NSHomeDirectory()
stringByAppendingPathComponent:@"Documents"];
}
// 加载图像
path = [documentsFolder() stringByAppendingPathComponent:@"image.png"];
return [UIImage imageWithContentsOfFile:path];
复制代码

3. 从URL资源加载图像

UIImage类可以从NSData实例加载图像,但它不能直接从URL字符串或NSURL对象加载图像。因此,只能为UIImage提供已经从URL下载的数据(即要创建由URL内容初始化的NSData实例)。

复制代码
NSURL  *url = [NSURL URLWithString:@"http://www.cnblogs.com/lovecode/images/demo.jpg"];
UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:url];

// 类似地我们可以直接创建个类方法
// 由具体的一个URL字符串,返回通过该资源构建的UIImage
+ (UIImage *) imageFromURLString: (NSString *) urlstring
{
return [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlstring]]];
}
复制代码

4. 从相册加载数据

UIImagePickerController类帮助我们从iPhone相册中选择图像。它提供一个独立的视图控制器,以模态形式呈现视图。该控制器发回的委托消息能够反映用户选择的图像。

  • UIImagePickerControllerSourceTypePhotoLibrary 所有同步到iPhone的图像以及包括用户拍摄的图片在内的任何相册。
  • UIImagePickerControllerSourceTypeSavedPhotosAlbum 仅含相册。
  • UIImagePickerControllerSourceTypeCamera 允许用户使用iPhone内置的摄像头拍照。

图像拾取器的委托必须遵守两个协议:UINavigationControllerDelegateUIImagePickerControllerDelegate。在接口中一定要为设置为拾取器委托的对象声明这两个协议。

  评论这张
 
阅读(104)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017