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

2018-08-17  本文已影响24人  biubiuboom

选择相册或者拍照

*进入相册方法

-(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];

}

}

上一篇 下一篇

猜你喜欢

热点阅读