IOS仿微信图片和拍照并利用AFNetworking进行上传
今天在做相关图片和拍照上传,在Github上找到了这个库,https://github.com/banchichen/TZImagePickerController,发现Start数比较多。于是进行了集成。同时参考了这位博主的内容:https://blog.csdn.net/lzq934370868/article/details/54563594感谢。
首先需要导入框架头文件
#import
//参数介绍: MaxImagesCount: 最多选择多少张图片 columnNumber :最少选择几张
delegate:设置代理并遵守协议 《 TZImagePickerControllerDelegate》
-(void)choosePhoto {
TZImagePickerController *imagePick = [[TZImagePickerController alloc]initWithMaxImagesCount:9columnNumber:0delegate:selfpushPhotoPickerVc:YES];
//在这个回调函数中获得图片 和 图片的名称 但是个人不推荐在这里拿。下面还是可以拿的到的。因为这里有肯能拿不到图片,
[imagePick setDidFinishPickingPhotosHandle:^(NSArray *photo,NSArray*asset,BOOLisSelectOriginalPhoto) {
NSLong(@"什么也不做");
}];
//弹出相册
[selfpresentViewController:imagePick animated:YEScompletion:nil];
}
//当相片选取完成之后回来到这个函数
//完成后获取图片
- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray*)photos sourceAssets:(NSArray*)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto {
//self.photoArr 保存图片的数组
// self.asseTArr 保存图片名称的数组
self.photoArr = photos;
//在此强调一声,我们的图片上传流程是先把图片上传至服务器,然后服务器返回给我一个url,我再把这个url当成图片的参数上传只服务器,这样才能识别; 所以不知道大家的流程是什么样的,我就把我的流程写出来;
// 首先获取服务器返回的url。就在下面写出来了
[selfgetImageUrl];
//刷新collection,显示图片
[self.collection reloadData];
}
#pragma mark ======== 获取服务器返回的url ========
-(void)getImageUrl {
[self.ImageURLArr removeAllObjects];
//遍历保存图片的数组;
for(UIImage*imageinself.photoArr) {
//使用AFN的post请求
[self.manager POST:@"http://baidu.lllll/App/upload.php"parameters:nil
constructingBodyWithBlock:^(id _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:nilsuccess:^(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);
}];
}