美文网首页
阿里云上传图片(无封装)

阿里云上传图片(无封装)

作者: biubiuboom | 来源:发表于2018-08-17 09:56 被阅读24次

选择相册或者拍照

*进入相册方法

-(void)loadImagePicker

{

UIActionSheet*sheet =nil;

if([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

sheet = [[UIActionSheetalloc]initWithTitle:nil

delegate:self

cancelButtonTitle:@"取消"

destructiveButtonTitle:nil

otherButtonTitles:@"拍照",@"从相册选择",nil];

}else{

sheet = [[UIActionSheetalloc]initWithTitle:nil

delegate:self

cancelButtonTitle:@"取消"

destructiveButtonTitle:nil

otherButtonTitles:@"从相册选择",nil];

}

[sheetshowInView:self.view];

}



选择照片后压缩图片
/**

*压缩图片尺寸

*

*@param image图片

*@param newSize大小

*

*@return真实图片

*/

- (UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize

{

UIGraphicsBeginImageContext(newSize);

[imagedrawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

UIImage* newImage =UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

returnnewImage;

}



选择相片或照相机的代理方法
- (void)actionSheet:(UIActionSheet*)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

NSString*title = [actionSheetbuttonTitleAtIndex:buttonIndex];

if([titleisEqualToString:@"拍照"]) {

UIImagePickerController*picker = [[UIImagePickerControlleralloc]init];

picker.delegate=self;

picker.sourceType=UIImagePickerControllerSourceTypeCamera;

[selfpresentViewController:pickeranimated:YEScompletion:nil];

}elseif([titleisEqualToString:@"从相册选择"]) {

UIImagePickerController* picker = [[UIImagePickerControlleralloc]init];

picker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;

picker.delegate=self;

[selfpresentViewController:pickeranimated:YEScompletion:nil];

}

}



选择图片后的代理方法
- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info {

UIImage*avatar = info[UIImagePickerControllerOriginalImage];

//处理完毕,回到个人信息页面

[pickerdismissViewControllerAnimated:YEScompletion:NULL];

//判断图片是不是png格式的文件

if(UIImagePNGRepresentation(avatar)) {

//返回为png图像。

UIImage*imagenew = [selfimageWithImageSimple:avatarscaledToSize:CGSizeMake(200,200)];

self.imageData=UIImagePNGRepresentation(imagenew);

//self.header_icon.image = imagenew;

}else{

//返回为JPEG图像。

UIImage*imagenew = [selfimageWithImageSimple:avatarscaledToSize:CGSizeMake(200,200)];

self.imageData=UIImageJPEGRepresentation(imagenew,0.8);

//self.header_icon.image = imagenew;

}

//#warning参数设置

NSString*endpoint =@"oss-cn-shanghai.aliyuncs.com";

//@"oss-cn-shanghai.aliyuncs.com/futuredf";

//明文设置secret的方式建议只在测试时使用,更多鉴权模式参考后面链接给出的官网完整文档的`访问控制`章节

id credential = [[OSSPlainTextAKSKPairCredentialProvideralloc]initWithPlainTextAccessKey:kAliAccessKeysecretKey:kAliSecretKey];

client= [[OSSClientalloc]initWithEndpoint:endpointcredentialProvider:credential];

OSSPutObjectRequest* put = [OSSPutObjectRequestnew];

// required fields

//#warning参数设置

put.bucketName=kAliBucketName;

//如果需要上传到指定文件夹 在objectKeys做文章

NSString*objectKeys = [NSStringstringWithFormat:@"weilaitongfu/%@/%@/FaceUrl%@.jpg",kFace,kUserData.userId,[selfgetCurrentTimestamp]];

NSLog(@"2017年07月05日20:09:51%@", objectKeys);

put.objectKey= objectKeys;

//put.uploadingFileURL = [NSURL fileURLWithPath:@"futuredf"];

put.uploadingData=self.imageData;

put.uploadProgress= ^(int64_tbytesSent,int64_ttotalByteSent,int64_ttotalBytesExpectedToSend) {

NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);

};

OSSTask* putTask = [clientputObject:put];

[putTaskcontinueWithBlock:^id(OSSTask*task) {

task = [clientpresignPublicURLWithBucketName:kAliBucketName

withObjectKey:objectKeys];

NSLog(@"objectKey: %@", put.objectKey);

if(!task.error) {

[selfrequesFaceImg:task.result];

NSLog(@"upload object success!=====%@",task.result);

}else{

NSLog(@"upload object failed, error: %@", task.error);

}

returnnil;

}];

}





如果批量的话用循环
NSOperationQueue*queue = [[NSOperationQueuealloc]init];

queue.maxConcurrentOperationCount= images.count;

for(inti =0; i

UIImage*image = images[i];

if(image) {

WS(weakSelf);

[[DPAlertHelpershareHelper]hideActivityIndicator];

[[DPAlertHelpershareHelper]showHUDAddedTo:self.viewcolor:[UIColorlightGrayColor]];

NSBlockOperation*operation = [NSBlockOperationblockOperationWithBlock:^{

//任务执行

OSSPutObjectRequest* put = [OSSPutObjectRequestnew];

put.bucketName=kAliBucketName;

NSString*str = [[NSStringalloc]init];

if(i ==0) {

str =kFront;

}elseif(i ==1){

str =kBack;

}elseif(i ==2){

str =kHand;

}

NSString*objectKeys = [NSStringstringWithFormat:@"weilaitongfu/%@/%@/%@_%@.jpg",krealName1,kUserData.userId,str,[weakSelfgetCurrentTimestamp]];

put.objectKey= objectKeys;

NSData*data =UIImageJPEGRepresentation(image,0.3);

put.uploadingData= data;

OSSTask* putTask = [clientputObject:put];

[putTaskwaitUntilFinished];//阻塞直到上传完成

[putTaskcontinueWithBlock:^id(OSSTask*task) {

task = [clientpresignPublicURLWithBucketName:kAliBucketName

withObjectKey:objectKeys];

NSLog(@"objectKey: %@", put.objectKey);

dispatch_async(dispatch_get_main_queue(), ^{

[[DPAlertHelpershareHelper]hideActivityIndicator];

});

if(!task.error) {

[self.imgArraddObject:task.result];

if(i ==2) {

[weakSelfrequesImg:weakSelf.imgArr];

}

//NSLog(@"upload object success!=====%@",task.result);

}else{

NSLog(@"upload object failed, error: %@", task.error);

}

returnnil;

}];

}];

if(queue.operations.count!=0) {

[operationaddDependency:queue.operations.lastObject];

}

[queueaddOperation:operation];

}

}

相关文章

  • 阿里云上传图片(无封装)

    选择相册或者拍照

  • 封装直传阿里云存储文件上传控件

    本文目标 封装一个直传阿里云OSS云存储图片上传控件 控件效果图 上传之前 上传成功 预览图片 文件上传前后台及阿...

  • 图片上传

    图片上传 获取阿里云接口 图片上传到阿里云 图片预览接口post http://113.108.139.178:1...

  • 阿里云OSS上传图片封装

    项目中用到了阿里云对象存储,就封装了四种上传方式,按数量分为单图和多图上传,上传方式分为同步和异步上传。

  • 移动端实现图片压缩上传

    上传图片有很多框架,或者是阿里云直传,关于阿里云直传可以看我之前的博客上传图片到阿里云,这次是通过后台进行操作上传...

  • 阿里云上传图片

    + (void)uploadImages:(NSArray *)images isAsync:(BOOL)isAs...

  • 阿里云上传图片

    引言 为了更好的掌握 OSS 存储,可以先去了解一下这些基本概念[https://help.aliyun.com/...

  • Android OSS上传图片到阿里云

    Android OSS上传图片到阿里云 我所采取的上传方式为异步上传,如果需要多张图片的话,可以直接循环上传就可...

  • 阿里云(I)

    参考资料:iOS 阿里云服务器图片上传iOS录制(或选择)视频,压缩、上传(整理)视频 拍摄 与压缩 阿里云OSS...

  • vue多图上传到阿里云

    结合这两篇文章小程序选择图片、预览,上传到阿里云和阿里云上传图片 引入js 做循环判断上传成功后再上传下一张图 循...

网友评论

      本文标题:阿里云上传图片(无封装)

      本文链接:https://www.haomeiwen.com/subject/aqkzbftx.html