美文网首页
iOS--图像加载UIImagePickerController

iOS--图像加载UIImagePickerController

作者: 空白Null | 来源:发表于2016-07-07 15:34 被阅读383次

一、图像加载

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,0.5)

最终得到的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,需要导入框架<MobileCoreServices/MobileCoreServices.h>

默认情况下此数组包含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  取编辑后的图片

//key:UIImagePickerControllerMediaType    获取到媒体类型

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];

//选中以后退出相册

[picker dismissViewControllerAnimated:YES completion:NULL];

}

2) 取消按钮的点击事件

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

[picker dismissViewControllerAnimated:YES completion:NULL];

}

五、将视频保存到相册

1、判断该视频能否保存

UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(path)

1、若返回YES,开始保存,在这里传入的是NSURL对象的path属性

UISaveVideoAtPathToSavedPhotosAlbum(path, self, @selector(video:didFinishSavingWithError:contextInfo:), nil);

2、保存以后调用

- (void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo: (void *)contextInfo, error为nil 代表保存成功

六、使用UIImagePickerController拍照和录像

1、创建UIImagePickerController对象。

2、指定拾取源,平时选择照片时使用的拾取源是照片库或者相簿,可以指定摄像头

3、设置媒体类型mediaType,注意如果是录像必须设置,如果是拍照此步骤可以省略,因为mediaType默认包含kUTTypeImage(注意媒体类型定义在MobileCoreServices.framework中)

4、展示UIImagePickerController(通常以模态窗口形式打开)。

5、拍照和录制视频结束后在代理方法中展示/保存照片或视频

相关文章

网友评论

      本文标题:iOS--图像加载UIImagePickerController

      本文链接:https://www.haomeiwen.com/subject/ysjljttx.html