选择手机图片上传&PHIMageManager
来源:互联网 发布:搜狗上的动态壁纸软件 编辑:程序博客网 时间:2024/04/29 20:16
现在很多手机app中都带有图片分享元素,这篇文章将展示这个功能完成过程。下面我将做个简单的界面实现这一功能。
准备工作
首先创建一个singleview Application。 pod 导入 QBImagePickerController 三方库(这个库用的比较普遍)。
打开项目在viewcontroller头文件里导入:
#import <QBImagePickerController/QBImagePickerController.h>
然后构建界面:一个添加按钮,两个imageview用于回显图片。界面如下:
选择图片并回显
现在来实现点击button选择图片回显在两个imageview中。
- (void)addPhotoAction{ self.pickPhotoVC = [QBImagePickerController new]; self.pickPhotoVC.delegate = self; self.pickPhotoVC.allowsMultipleSelection = YES; [self presentViewController:self.pickPhotoVC animated:YES completion:^{ }];}
在viewcontroller(self)中添加QBImagePickerControllerDelegate代理,allowsMultipleSelection属性为允许同时选择多张图,默认是NO。
现在运行程序,点击button就能进入图片选择界面了:
但是会发现,点击done(完成)按钮并不会回原界面。这时候需要实现代理方法:
- (void)qb_imagePickerController:(QBImagePickerController *)imagePickerController didFinishPickingAssets:(NSArray *)assets { //退出图片选择页面,回到原界面 [self dismissViewControllerAnimated:YES completion:NULL];}
原先的重现方法—ALAsset
之前的QBImagePickerController中所使用的是ALAsset 来重现图片,但是ALAsset在IOS9已经不赞成使用了,先贴一段原先用ALAsset重现图片的代码(仍然可以使用,但是现在pod进来的QB已经没有自动导入ALAsset库了,我们可以在项目设置里 build Phases中添加AssetsLibrary.framework 并在viewcontroller 头文件中导入#import
//用来存储图片 NSMutableArray *mutArr = [NSMutableArray new]; for (ALAsset *asset in assets) { UIImage *image = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]]; UIImage *croppedImage = [image imageByScalingWithMaxWidth:kImageMaxWidth]; [mutArr addObject:croppedImage];}
ios9推荐的重现方法 — PHAsset
PhAsset可以回显你手机照片库的image同时也能回显你iCloud中的图片。
先记录一下在本栗子中如何回显,后面再详细去了解PHAsset。
//用来存储图片NSMutableArray *mutArr = [NSMutableArray new];for (PHAsset *asset in assets) { //asset中取image PHImageManager *manager = [PHImageManager defaultManager]; [manager requestImageForAsset:asset targetSize:CGSizeMake(100.0, 100.0) contentMode:PHImageContentModeAspectFill options:nil resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) { [mutArr addObject:result]; if([mutArr count] == [assets count]){ //显示图片 [self showImages:mutArr] } }]; }
ok,再次运行便能选择图片和看到图片回显效果了。
如图:
保存图片到沙盒
- (void)saveImages:(NSArray *)images{ //初始化 用来保存图片沙盒地址 NSMutableArray *mutArr = [NSMutableArray array]; NSString *filePath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Library"] stringByAppendingPathComponent:@"images"]; //清空历史图片 NSFileManager *fileManager = [NSFileManager defaultManager]; if ([fileManager fileExistsAtPath:filePath]) { [fileManager removeItemAtPath:filePath error:nil]; } for (UIImage *croppedImage in images) { NSData *data = UIImageJPEGRepresentation(croppedImage, .72); BOOL success = [[NSFileManager defaultManager] createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil]; if (success) { //写入沙盒 NSString *imageSaveTime = [self getTimeAndRandom]; NSString *path = [filePath stringByAppendingFormat:@"/%@.jpg",imageSaveTime]; [data writeToFile:path atomically:YES]; [mutArr addObject:path]; } }}
最后 上传沙盒内的文件到服务端。比如你用的AFNetworking — 去百度吧,hoho。
关于PHImageManager之后再补全吧。
- 选择手机图片上传&PHIMageManager
- PHImageManager
- Android手机图片上传 选择不了本地照片 解决方案
- angularjs手机webapp 利用input拍照,图库选择上传图片
- 选择手机本地图片
- 手机上传图片
- 手机端上传图片
- 手机端图片上传
- 安卓实现拍照、在手机中选择图片通过webservice上传图片到服务器
- 安卓实现拍照、在手机中选择图片通过webservice上传图片到服务器
- PHP实现在手机上选择完图片直接上传图片
- Android 选择图片、上传图片
- 选择手机中的一张照片或拍照上传图片(超高清晰度)
- android 选择手机一张图片
- Android 手机相册图片选择
- 手机拍照上传图片问题
- 上传手机图片的问题
- WebUploader 手机端上传图片
- hibernate设置
- View的滑动冲突解决-android开发艺术探索笔记
- 曾经的自己与现在的我
- cocoaPods 最新安装攻略
- PDA和PAD的区别何在?
- 选择手机图片上传&PHIMageManager
- netty5笔记-线程模型4-无锁队列MpscLinkedQueue
- 画图工具使用gnuplot&graphviz
- Android开发manifest.xml文件不常用属性
- 着手微信企业号的一些尝试
- boost 1.56.0 编译及使用
- 提升自己的编码能力
- 遮罩、模糊效果和动画
- Resource(2)