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内置的摄像头拍照。

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

转载于:https://www.cnblogs.com/Xer-Lee/archive/2011/12/26/2302134.html

iphone开发中图像处理相关要点相关推荐

  1. iPhone开发中现文件的增加 删除和查询

    iPhone开发中,我们常常用到一些对于文件的增加,删除和查询,这些基本的功能对于开发者来说非常的重要,而且非常实用.本文给大家介绍一下如何实现这几个具体的功能. //创建文件 -(void)Crea ...

  2. iphone iPhone开发中为UINavigationBar设置背景图片方法

    1:原文摘自:http://mobile.51cto.com/iphone-284865.htm iPhone开发中为UINavigationBar设置背景图片方法是本文要介绍的内容,在iPhone开 ...

  3. 学习iPhone开发中 sqlite3的使用

    由于我主要负责我们小组项目数据库模块的部分所以这几天都一直在研究在iphone中最为常用的一个简单数据库sqlite,自己也搜集很多资料,因此在这里总结一下这几天的学习成果: 1.Sqlite操作简明 ...

  4. iphone iPhone开发中如何将制作图片放大缩小代码实现案例

    1:原文摘自:http://mobile.51cto.com/iphone-285108.htm iPhone开发中如何将制作图片放大缩小案例是本文要介绍的内容,主要是来学习iphone开发中动画的制 ...

  5. iPhone开发中的技巧整理(四)

    iphone开发笔记 退回输入键盘 - (BOOL) textFieldShouldReturn:(id)textField{ [textField  resignFirstResponder]; } ...

  6. 拒绝内存泄露,谈一些纯代码iPhone开发中的内存管理

    笔者刚从学校出来,算上实习期,接触iPhone开发已有半载,也算是对iPhone(iOS)开发中的内存管理有了些认识,由于开发中一直没有用Interface Builder,本文就谈谈纯代码iPhon ...

  7. 在iPhone开发中,全局变量的几种使用方法

    在iPhone开发中,使用全局变量有这么几种实现方法: 1. 在AppDelegate中声明并初始化全局变量       然后在需要使用该变量的地方插入如下的代码:       //取得AppDele ...

  8. iPhone开发中一些使用小技巧

    经过iphone开发,我发现在开发过程中最难的就是一些嘈杂的细节,而了解一些小技巧就会达到事半功倍的效果,下面我就总结一下在iphone开发中的一些小技巧. 1.如果在程序中想对某张图片进行处理的话( ...

  9. iOS开发中视图相关的小笔记:push、modal、popover、replace、custom

    在storyboard中,segue有几种不同的类型,在iphone和ipad的开发中,segue的类型是不同的. 在iphone中,segue有:push,modal,和custom三种不同的类型, ...

最新文章

  1. Python游戏开发,pygame模块,Python实现打砖块小游戏
  2. 第1章 故障处理方法
  3. php文件数组,从文件到数组php
  4. 【模型解读】network in network中的1*1卷积,你懂了吗
  5. Strom集群安裝,Python安裝,Strom配置,Strom常用命令
  6. 二次拟合r方_R方和线性回归拟合优度
  7. windows环境下 curl 安装和使用
  8. Linux网络协议栈:Linux 中每个 TCP 连接最少占用多少内存?
  9. Tensorflow 循环神经网络-时间序列表示
  10. 高频一线大厂Python面试题:算法+爬虫+数据处理+基础
  11. Facebook 数据泄露高达 5000 万人,斯诺登怒评!
  12. xml property标签注入一个类变量_Spring-06-依赖注入(DI)
  13. mysql语句中出现中文的情况下,在java程序中不会有结果,也不会报错.
  14. php 程序设计代码教程
  15. secure IRS aided ISAC
  16. sql语句根据身份证号获取年龄
  17. 第十七章、程序管理与 SELinux 初探
  18. excel转vcf 易语言免费版
  19. 华山全敏还是全劲_一梦江湖华山加点_一梦江湖华山加点推荐2020_攻略
  20. 罗克韦尔自动化通过收购ASEM加强控制和可视化产品组合

热门文章

  1. android百度地图单点定位_Android百度地图实现搜索和定位及自定义图标绘制并点击时弹出泡泡...
  2. 配置多个ssh-key
  3. docker安装部署和常用命令
  4. 使用xftp工具修改文件权限
  5. UVa673 - Parentheses Balance
  6. PAT 数字分类(20)
  7. HDU 6184 2017广西邀请赛:Counting Stars(三元环)
  8. 51nod-1135:原根
  9. java扫描指定主机的端口socket服务
  10. OPNET网络仿真分析-1.1.2、OPNET简介