移动应用研发

IOS仿微信图片和拍照并利用AFNetworking进行上传

2018-08-18  本文已影响69人  a9eb75a07212

今天在做相关图片和拍照上传,在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);

        }];

    }

上一篇下一篇

猜你喜欢

热点阅读