UI -- 图像加载

作者: 爱摄影的铲屎官 | 来源:发表于2016-05-12 18:00 被阅读27次

一、图像加载

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 -- 图像加载

    一、图像加载 iOS图像加载通常有四种方式 1、相册 用户的相册资源,UIImagePickerControlle...

  • 事件(下)

    事件类型 UI事件 load:当页面完全加载后在window上面触发,当所有框架加载完成后在框架集上触发,图像加载...

  • 图片延迟加载3种实现方式

    定义:延迟加载也称为惰性加载,即在长网页中延迟加载图像。用户滚动到它们之前,视口外的图像不会加载。这与图像预加载相...

  • 图像加载以及融合

    图像加载函数 图像的线性融合

  • 三(3.1 core 模块)图像加载,修改,保存

    加载图像 imread 显示图像 NameWindow & imshow 修改图像 cvtcolor 保存图像 ...

  • 分享前端开发常用代码片段

    一、预加载图像 如果你的网页中需要使用大量初始不可见的(例如,悬停的)图像,那么可以预加载这些图像。 二、检查图像...

  • 转载(非原创)前端常用代码片段

    一、预加载图像 如果你的网页中需要使用大量初始不可见的(例如,悬停的)图像,那么可以预加载这些图像。 二、检查图像...

  • 分享前端开发常用代码片段-值得收藏

    一、预加载图像 如果你的网页中需要使用大量初始不可见的(例如,悬停的)图像,那么可以预加载这些图像。 二、检查图像...

  • VUE首屏加载优化

    (1)组件按需加载;对Element-UI, Mint-UI组件进行按需加载;(2)路由组建懒加载;异步加载con...

  • 图片懒加载

    懒加载,通常是延迟加载初始视口外的图像,直到我们滚动页面,达到图像与底部视口的交汇处才开始加载图像。 我们需要做的...

网友评论

    本文标题:UI -- 图像加载

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