ios中UIImageView展现图片的不同处理方式
2014-05-15 14:27
459 查看
原文链接:http://www.cnblogs.com/lovecode/archive/2011/11/27/2265275.html#commentform
iPhone图像通常存储在以下4个地方:
相册(PhotoAlums):用户可以使用UIImagePickerController类提供的交互对话框从该相册中获取图像。
应用程序包:将图像与可执行程序、Info.plist文件和其他资源一同存储,用户可以通过本地文件路径由imageNamed:方法来读取这些基于包的图像。
沙盒:借助沙盒,可以将文件存储到Documents、Library和tmp文件夹中。
因特网(Internet):应用程序可通过URL资源从网上下载图像。
图像文件的位置决定着读取该文件的具体方式。相册中的图片及其路径无法直接从应用程序访问,只有终端用户能够浏览和选择图像,使所选图像对应用程序可用。图像也不能由URL直接初始化。图像源不同读取方式也不同:
1. 从应用程序包加载图像
UIImage类提供了一种加载应用程序包中存储的任意图像的简单方法,即通过文件名及其扩展名调用imageNamed:方法。
[cpp] view
plaincopy
myImage = [UIImage imageNamed:@"icon.png"];
为避免本地图像缓存及其有效利用内存空间的问题,还可用imageWithContentsOfFile:替换,这个方法会返回从某一具体路径中加载的图像,这个路径需以参数形式提供。当然,若要从应用程序包中获取图像路径,可以查询NSBundle类为给定资源查找路径。示例代码:
[cpp] view
plaincopy
NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"];
myImage = [UIImage imageWithContentsOfFile:path];
2. 从沙盒加载图像
默认情况下,每个沙盒包含3个文件夹:Documents、Library和tmp。图像等由应用程序生成的数据通常位于Documents文件夹内。在iPhone开发中可以通过调用实用工具主目录函数可靠地定位顶级沙盒文件夹。通过NSHomeDirectory()返回结果,我们可以向下导航一级到Documents文件夹,完全可以保证正确的位置。示例代码:
[cpp] view
plaincopy
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实例)。
[cpp] view
plaincopy
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。在接口中一定要为设置为拾取器委托的对象声明这两个协议。
iPhone图像通常存储在以下4个地方:
相册(PhotoAlums):用户可以使用UIImagePickerController类提供的交互对话框从该相册中获取图像。
应用程序包:将图像与可执行程序、Info.plist文件和其他资源一同存储,用户可以通过本地文件路径由imageNamed:方法来读取这些基于包的图像。
沙盒:借助沙盒,可以将文件存储到Documents、Library和tmp文件夹中。
因特网(Internet):应用程序可通过URL资源从网上下载图像。
图像文件的位置决定着读取该文件的具体方式。相册中的图片及其路径无法直接从应用程序访问,只有终端用户能够浏览和选择图像,使所选图像对应用程序可用。图像也不能由URL直接初始化。图像源不同读取方式也不同:
1. 从应用程序包加载图像
UIImage类提供了一种加载应用程序包中存储的任意图像的简单方法,即通过文件名及其扩展名调用imageNamed:方法。
[cpp] view
plaincopy
myImage = [UIImage imageNamed:@"icon.png"];
为避免本地图像缓存及其有效利用内存空间的问题,还可用imageWithContentsOfFile:替换,这个方法会返回从某一具体路径中加载的图像,这个路径需以参数形式提供。当然,若要从应用程序包中获取图像路径,可以查询NSBundle类为给定资源查找路径。示例代码:
[cpp] view
plaincopy
NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"];
myImage = [UIImage imageWithContentsOfFile:path];
2. 从沙盒加载图像
默认情况下,每个沙盒包含3个文件夹:Documents、Library和tmp。图像等由应用程序生成的数据通常位于Documents文件夹内。在iPhone开发中可以通过调用实用工具主目录函数可靠地定位顶级沙盒文件夹。通过NSHomeDirectory()返回结果,我们可以向下导航一级到Documents文件夹,完全可以保证正确的位置。示例代码:
[cpp] view
plaincopy
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实例)。
[cpp] view
plaincopy
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。在接口中一定要为设置为拾取器委托的对象声明这两个协议。
相关文章推荐
- ios中UIImageView展现图片的不同处理方式
- iphone,UIImageView展现不同途径的图片的不同处理方式
- iphone,UIImageView展现不同途径的图片的不同处理方式
- iOS图片的填充方式UIImageView(contentMode)有什么不同
- iOS图片的填充方式UIImageView(contentMode)有什么不同
- Android WebView 上传图片(以5.0为分界点)不同的处理方式
- iOS开发 ImageView网络请求得到的图片设置UIImageView不变形处理
- iOS有关图片处理的总结 (一)------UIImage的加载方式
- ios的UIImage的两种不同的图片加载方式 tom猫
- ios UIImageView处理图片大小问题
- iOSUIImageView处理图片大小问题
- iOS简单的画线(UIImageVIew方式)
- iOS开发>>>UIImageView连续播放图片,组成动画
- ios学习--结合UIImageView实现图片的移动和缩放
- 使用UIImageView展现来自网络的图片
- ios用 UIImageView实现图片幻灯片
- [iOS代码] 视图view如何截图 生成UIImage图片
- 旋转翻转UIImage 不是UIImageView 适用于源图像的处理,例如截图后旋转----改变图片大小
- IOS学习之路二十四(UIImageView 加载gif图片)
- IOS UIImage常用的加载图片有3种方式