iOS常用iOS基础

iOS 从相册上传GIF

2021-07-09  本文已影响0人  iOSEer冷箭

iOS 11支持GIF文件了。那么怎么上传自己想要的GIF图片呢,

1.调用相册:UIImagePickerController 拿到代理返回的info数组。

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);

    }];

}

上一篇下一篇

猜你喜欢

热点阅读