iOS 相册图片多选以及类似微信获取相册图片并使用AFN框架上传至服务器

做APP基本上都是需要从系统的相册当中获取一张或多张图片。那怎么做呢?下面我就带你来实现这个内容,第一次写。 我只是记录一下。如有写错,还请各位大神指点一二 ;

  1. 想要使用类似微信的相册功能,就必须导入框架 TZImagePickerController 。(星星特别多哈。。。。)
  2. 去 https://github.com 网站 搜索 TZImagePickerController 进行下载。 也可以使用cocoa pods进行下载。 如果你没有安装cocoa pods那我就推荐http://blog.csdn.net/jhy835239104/article/details/52655122 这篇文章,个人觉得还是很不错的。需要的朋友可以参考;

好啦,废话不多说;直接上代码;

1.

##
在控制器当中添加一个UIView 和 collectionView.collectionView用来显示图片(看你需要,那就怎么添加)
-(void)choosePickViewController{//创建view,添加到系统的view上面UIView *btnView = [[UIView alloc]init];btnView.frame = CGRectMake(0, self.textV.ymt_height, self.view.bounds.size.width,50);btnView.backgroundColor = [UIColor colorWithRed:232/255.0 green:233/255.0 blue:234/255.0 alpha:1];self.btnView = btnView;[self.view addSubview:btnView];//我需要点击创下面的Btn按钮来跳转相册UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];[btn setImage:[UIImage imageNamed:@"buyon_image"] forState:UIControlStateNormal];btn.frame = CGRectMake(25,5, 40 , 40);[btn addTarget:self action:@selector(choosePhoto) forControlEvents:UIControlEventTouchUpInside];[self.btnView addSubview:btn];//创建collection来装饰UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];CGFloat margin = 5; //间距CGFloat itemWH = (self.view.ymt_width - 4 * margin) / 3 -margin;layout.itemSize = CGSizeMake(itemWH, itemWH);layout.minimumInteritemSpacing = margin;layout.minimumLineSpacing = margin;layout.sectionInset = UIEdgeInsetsMake(5, 10, 5, 10);UICollectionView *collection = [[UICollectionView alloc]initWithFrame:CGRectMake(0, self.textV.ymt_height + self.btnView.ymt_height , LZQScreenW, LZQScreenH - self.textV.ymt_height - self.btnView.ymt_height) collectionViewLayout:layout];collection.backgroundColor = [UIColor colorWithRed:245/255.0 green:240/255.0 blue:245/255.0 alpha:1];collection.delegate = self;collection.dataSource = self;collection.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;self.collection = collection;[self.view addSubview:collection];[self.collection registerClass:[YMTShoppingViewCell class] forCellWithReuseIdentifier:shoppingID ];}

2.
注意 ,,,想要访问相册必须要到项目的info.plist 中添加访问权限,
* *

  1. 在监听按钮的点击的方法中
首先需要导入框架头文件
#import <TZImagePickerController/TZImagePickerController.h>
//参数介绍: MaxImagesCount: 最多选择多少张图片  columnNumber :最少选择几张delegate:设置代理并遵守协议 《 TZImagePickerControllerDelegate》-(void)choosePhoto {TZImagePickerController *imagePick = [[TZImagePickerController alloc]initWithMaxImagesCount:9 columnNumber:0 delegate:self pushPhotoPickerVc:YES];//在这个回调函数中获得图片  和   图片的名称 但是个人不推荐在这里拿。下面还是可以拿的到的。因为这里有肯能拿不到图片,[imagePick setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photo, NSArray *asset, BOOL isSelectOriginalPhoto) {NSLong(@"什么也不做");}];//弹出相册[self presentViewController:imagePick animated:YES completion:nil];}
//当相片选取完成之后回来到这个函数
//完成后获取图片
- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto {//self.photoArr 保存图片的数组// self.asseTArr 保存图片名称的数组self.photoArr = photos;//在此强调一声,我们的图片上传流程是先把图片上传至服务器,然后服务器返回给我一个url,我再把这个url当成图片的参数上传只服务器,这样才能识别;   所以不知道大家的流程是什么样的,我就把我的流程写出来;  // 首先获取服务器返回的url。就在下面写出来了[self getImageUrl];//刷新collection,显示图片[self.collection reloadData];}#pragma  mark  ========   获取服务器返回的url  ========
-(void)getImageUrl {[self.ImageURLArr removeAllObjects];//遍历保存图片的数组;for (UIImage *image in self.photoArr) {//使用AFN的post请求   [self.manager POST:@"http://baidu.lllll/App/upload.php" parameters:nilconstructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {//将图片装换成二进制数据。看你的图片是什么格式,苹果一般都是JPEG.   下面的image就是遍历出来的图片,后面的参数是缩放图片的比例,如果你的图片过大,服务器是不接收的;NSData *data = UIImageJPEGRepresentation(image, 0.5);/*参数介绍: FileData: 二进制图片 name: 图片可以什么名称上传fileName: 服务器用什么名称的文件接收mimeType:图片的类型,无非两种,jpeg 和 png 也可百度查查*/[formData appendPartWithFileData:data name:@"pic" fileName:@"123.JPEG" mimeType:@"image/jpeg"];} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {//当发送成功之后就返回图片的url,解析获取;转模型_shopModel = [YMTShopModelURL mj_objectWithKeyValues:responseObject];//这是保存服务器返回图片url 的数组;[self.ImageURLArr addObject:_shopModel.url];//最后在刷新collectionView。图片就会显示上去  } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {NSLog(@"上传失败------%@",error);}];}
}2.上传就差不多了;有什么疑问可以留言,我能解决的会尽量帮;demo暂时没有; 我的这个其实挺简单;只是自己看框架的时候看的头都疼了,里面的方法多不说,还需要上传视屏和音频;  后期有时间也会去研究并写出来;写的不好请指教;

# iOS 相册图片多选以及类似微信获取相册图片并使用AFN框架上传至服务器相关推荐

  1. 微信小程序:从本地相册选择图片、相机拍照,并将所选图片上传到服务器

    简介 小程序项目中有个需求:用户聊天时可以上传图片,还能支持拍照.于是学习了一下,分享给大家. 微信小程序中有个wx.chooseImage的方法可以快捷调用达到需求的效果. 具体实现 1.为了简化代 ...

  2. ios 拍照上传到服务器_ios端浏览器拍照上传到服务器,图片被旋转90度 php 解决方案...

    1.可以通过前端进行解决,本案例通过后端解决的 判断请求的浏览器的ua,如果是ios浏览器则进行90度旋转 重点来了: 必须确保检测的图片是ios设备上传的完整图片,不要在前端压缩过的,因为压缩后的图 ...

  3. 微信图片 自动上传到服务器,微信小程序怎样使图片上传至服务器

    这次给大家带来微信小程序怎样使图片上传至服务器,微信小程序使图片上传至服务器的注意事项有哪些,下面就是实战案例,一起来看一下.-wxml 发布项目 /**选择图片 */ choose: functio ...

  4. 微信小程序如何把图片上传至服务器

    微信小程序如何把图片上传至服务器 前些日子接了个任务就是开发一个小程序,遇到了一个问题就是需要图片上传至服务器并保存记录,遵循着解决思路我们先从最开始入手 1:微信上传接口 2:服务器接收接口 3:保 ...

  5. php微信小程序多图上传,tp5实现微信小程序多图片上传到服务器功能

    最近在做一个教育类的小商城的微信小程序,用到了上传多个图片文件到服务器端,这里做一个讲解,希望对大家有所帮助. 1,小程序端: 在wxml文件中: 删除 点击上传作业 在js文件中: Page({ / ...

  6. 小程序 图片上传php后台,微信小程序图片选择、上传到服务器、预览(PHP)实现实例...

    微信小程序图片选择.上传到服务器.预览(php)实现实例 小程序实现选择图片.预览图片.上传到开发者服务器上 后台使用的tp3.2 图片上传 请求时候的header参考时可以去掉(个人后台验证权限使用 ...

  7. php 点击选择图片上传,微信小程序图片选择、上传到服务器、预览(PHP)实现实例...

    微信小程序图片选择.上传到服务器.预览(PHP)实现实例 小程序实现选择图片.预览图片.上传到开发者服务器上 后台使用的tp3.2 图片上传 请求时候的header参考时可以去掉(个人后台验证权限使用 ...

  8. cocos creator 调用相机相册裁剪图片并上传到服务器

    大致思路就是creator里面js调用Java和object-c代码,调起系统相机相册,选取图库图片/拍照图片进行裁剪,然后转化为base64字符串,最后通过http post请求上传到服务器. Ja ...

  9. 微信发送图片php,PHP怎么实现微信图片上传到服务器?

    这篇文章主要介绍了PHP实现微信图片上传到服务器的方法,涉及php基于curl操作图片文件的相关实现技巧,需要的朋友可以参考下 本文实例讲述了PHP实现微信图片上传到服务器的方法.分享给大家供大家参考 ...

最新文章

  1. android 云应用开发,Android云应用开发:网络通信技术介绍
  2. python 多分类 recall_python实现二分类和多分类的ROC曲线教程
  3. 【USACO06DEC】—牛奶模式Milk Patterns(后缀自动机)
  4. dinic (最大流) 算法 讲解
  5. Windows Phone 开发环境的搭建
  6. HDU 2095 find your present (2)
  7. P5327 [ZJOI2019]语言
  8. LeetCode 1834. 单线程 CPU(排序 + 优先队列)
  9. LeetCode第45场双周赛-解题报告
  10. Probe:Android线上OOM问题定位组件
  11. ant root环境配置_Java ant环境变量配置
  12. 打造微信“智慧城市” 乌海率先开通城市公共微信服务
  13. 我们都希望有一部属于自己的电脑。
  14. 分析Faster RCNN中的RPN
  15. vue element-ui 日期弹出框右侧被遮挡
  16. 题目 给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and ']', 判定是否是有效的括号序列。 样例 括号必须依照 ()顺序表示, ()[]
  17. c语言rgb数值颜色渐变算法,颜色渐变算法
  18. Echarts真正态分布图
  19. 计算机图形学直线线型实验报告,计算机图形学实验报告-直线中点bresenham算法的实现资料.doc...
  20. silhouette_matlab

热门文章

  1. 现代女生令我们如此失望!!!(女生勿进)
  2. 大话设计模式——04代理模式
  3. STM32蜂鸣器播放歌曲《小星星》
  4. Android调用 Webservice报org.ksoap2.serializa 异常
  5. ADB ~ 隐藏或禁用状态栏和虚拟按键
  6. 微信又双叒更新啦!新增朋友圈视频动态封面,还有这些实用的功能!
  7. ETF期权开户需要注意什么?
  8. TC Games教你怎么不用安卓模拟器畅玩元气骑士手游高清电脑版
  9. JAVA云端存储的待办清单的设计计算机毕业设计Mybatis+系统+数据库+调试部署
  10. 帆软 - ²平方号,€欧元符号 显示乱码