UI -- 图像加载

一、图像加载

iOS图像加载通常有四种方式

1、相册

用户的相册资源,UIImagePickerController读取

2、应用程序包

与应用程序源文件同一目录,可通过文件路径读取

//图像路径

NSString *path = [[NSBundle mainBundle] stringByAppendingPathComponent:@"icon.png"];

//通过路径对应的图片文件

UIImage *image = [UIImage imageWithContentsOfFile:path];

3、沙盒

沙盒目录既可以保存图片,也可以通过路径读取

//沙盒下的Documents目录

NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/icon.png"];

//通过路径对应的图片文件

UIImage *image = [UIImage imageWithContentsOfFile:path];

4、因特网

1)通过URL从网络上下载图像读取

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com/img/520.jpeg"];

2)NSData提供了简单的网络数据加载

NSData *data = [NSData dataWithContentsOfURL:url];

3)NSData转UIImage

//网络获取数据

NSData *data = [NSData dataWithContentsOfURL:url];

//将NSData转成UIImage

UIImage *image = [UIImage imageWithData:data];

4)UIImage转NSData

//compressionQuality图像的范围为0.0(最低品质)到1.0(最高品质)的压缩系数

NSData *data = UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality);

PS: 将UIImage对象转话为NSData对象的两种方式

1、UIImageJPEGRepresentation(UIImage *image,1.0)

最终得到的data对象数据量少,而且可以通过设置图片质量进一步的减少数据量,虽然清晰度不如第二种方式,但对于大众用户来说区别不大

2、UIImagePNGRepresentation

最终得到的data队形数据量大

二、将图片保存到手机相册

1、保存照片到相簿

UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);

2、保存结束以后调用该方法

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {

NSLog(@"%@",error);//如果为null表示已经保存到相册中

}

三、UIImagePickerController的基本介绍

1、相册资源访问通过UIImagePickerController来访问

2、UIImagePickerController类继承自UINavigationController,是个独立的导航控制器,使用模态窗口的方式弹出。

四、UIImagePickerController的常用属性和方法

1、拾取源类型,有三种类型

@property(nonatomic) UIImagePickerControllerSourceType sourceType

UIImagePickerControllerSourceTypePhotoLibrary:照片库,默认值

UIImagePickerControllerSourceTypeCamera:摄像头

UIImagePickerControllerSourceTypeSavedPhotosAlbum:相薄

2、媒体类型

@property(nonatomic,copy) NSArray *mediaTypes

默认情况下此数组包含kUTTypeImage,所以拍照时可以不用设置;但是当要录像的时候必须设置,可以设置为kUTTypeVideo(视频,但不带声音)或者kUTTypeMovie(视频并带有声音)

3、视频最大录制时长,默认为10s

@property(nonatomic) NSTimeInterval videoMaximumDuration

4、视频质量,枚举类型

@property(nonatomic) UIImagePickerControllerQualityType  videoQuality

UIImagePickerControllerQualityTypeHigh:高清质量

UIImagePickerControllerQualityTypeMedium:中等质量,适合WiFi传输

UIImagePickerControllerQualityTypeLow:低质量,适合蜂窝网传输

UIImagePickerControllerQualityType640x480:640*480

UIImagePickerControllerQualityTypeIFrame1280x720:1280*720

UIImagePickerControllerQualityTypeIFrame960x540:960*540

5、摄像头设备,cameraDevice是枚举类型

@property(nonatomic) UIImagePickerControllerCameraDevice  cameraDevice

UIImagePickerControllerCameraDeviceRear:前置摄像头

UIImagePickerControllerCameraDeviceFront:后置摄像头

6、设置图像编辑,允许选取器框定和拉伸图像。默认为NO。

@property(nonatomic)BOOL  allowsEditing

7、UIImagePickerController的代理方法

1) 相册图片选中之后调用

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

//key:UIImagePickerControllerOriginalImage 取原始图片

//key:UIImagePickerControllerEditedImage 取编辑后的图片

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];

//选中以后退出相册

[picker dismissViewControllerAnimated:YES completion:NULL];

}

2) 取消按钮的点击事件

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

[picker dismissViewControllerAnimated:YES completion:NULL];

}

你可能感兴趣的:(UI -- 图像加载)