iOS 从相册上传GIF
iOS 11支持GIF文件了。那么怎么上传自己想要的GIF图片呢,
1.调用相册:UIImagePickerController 拿到代理返回的info数组。
![](https://img.haomeiwen.com/i19986756/afd9f384f7bb5441.png)
2,最重要的一步,转为NSData(一般服务器以data 上传),用系统#import <Photos/Photos.h>
如果是iOS 11 以前,则可以用<AssetsLibrary/AssetsLibrary.h>
-(void)tranUpLoadImageGifWithImage:(NSDictionary<NSString *,id> *)info{
// 上传gif
//转为NSData
if(@available(iOS11.0, *)) {
PHAsset *phAss = [info valueForKey:UIImagePickerControllerPHAsset];
PHImageRequestOptions *options = [PHImageRequestOptions new];
options.resizeMode = PHImageRequestOptionsResizeModeFast;
options.synchronous=YES;
PHCachingImageManager *mager = [[PHCachingImageManager alloc]init]; [magerrequestImageDataForAsset:phAssoptions:optionsresultHandler:^(NSData*_NullableimageData,NSString*_NullabledataUTI,UIImageOrientationorientation,NSDictionary*_Nullableinfo) {
NSLog(@"能拿到:%@",imageData);
//上传服务器的方法
[selfupLoadImageData:imageData];
}];
}else{
// Fallback on earlier versions
}
}
3. 拿到NSData,就能上传服务器啦
-(void)upLoadImageData:(NSData*)data{
自己服务器上传地址
NSString*urlString = [NSStringstringWithFormat:@"%@",BASE_URL];
NSDictionary *params = @{@"image_model":@"1"};
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[ProgressHUD showLoading];
[managerPOST:urlStringparameters:paramsheaders:nilconstructingBodyWithBlock:^(id _NonnullformData) {
NSString*str =@"image_file";
NSString*fileName;
// 上传图片,以文件流的格式
/**
*filedata : 图片的data
*name : 后台的提供的字段
*mimeType : 类型
*/
fileName = [NSStringstringWithFormat:@"%@.gif", str];
[formDataappendPartWithFileData:dataname:strfileName:fileNamemimeType:@"image/gif"];
}progress:NULLsuccess:^(NSURLSessionDataTask*_Nonnulltask,id _NullableresponseObject) {
[ProgressHUDdismiss];
//打印看下返回的是什么东西
NSLog(@"上传图片成功:%@",responseObject);
[ProgressHUDshow:@"图片上传成功!"];
}failure:^(NSURLSessionDataTask*_Nullabletask,NSError*_Nonnullerror) {
[ProgressHUDdismiss];
[ProgressHUDshow:@"图片上传失败!"];
NSLog(@"上传图片失败,失败原因是:%@", error);
}];
}