-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if(indexPath.row==0){
// 创建UIImagePickerController实例
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
// 设置代理
imagePickerController.delegate = self;
// 是否允许编辑(默认为NO)
imagePickerController.allowsEditing = YES;
// 创建一个警告控制器
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"选取图片" message:nil preferredStyle:UIAlertControllerStyleActionSheet];
// 设置警告响应事件
UIAlertAction *cameraAction = [UIAlertAction actionWithTitle:@"拍照" style:0 handler:^(UIAlertAction * _Nonnull action) {
//UIImagePickerControllerSourceTypeCamera设置相机
//UIImagePickerControllerCameraDeviceFront设置前置或后置摄像头
//UIImagePickerControllerSourceTypePhotoLibrary调用手机相册里的图片
// 设置照片来源为相机
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
// 设置进入相机时使用前置或后置摄像头
imagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceFront;
// 展示选取照片控制器
[self presentViewController:imagePickerController animated:YES completion:^{}];
}];
UIAlertAction *photosAction = [UIAlertAction actionWithTitle:@"从相册选择" style:0 handler:^(UIAlertAction * _Nonnull action) {
//图片来源于手机相册
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:imagePickerController animated:YES completion:^{}];
}];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:1 handler:^(UIAlertAction * _Nonnull action) {
}];
// 判断是否支持相机
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
// 添加警告按钮
[alert addAction:cameraAction];
}
[alert addAction:photosAction];
[alert addAction:cancelAction];
// 展示警告控制器
[self presentViewController:alert animated:YES completion:nil];
}
}
//设置UIImagePickerController的代理方法:
#pragma mark - UIImagePickerControllerDelegate
完成图片的选取后调用的方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
// 选取完图片后跳转回原控制器
[picker dismissViewControllerAnimated:YES completion:nil];
/* 此处参数 info 是一个字典,下面是字典中的键值 (从相机获取的图片和相册获取的图片时,两者的info值不尽相同)
* UIImagePickerControllerMediaType; // 媒体类型
* UIImagePickerControllerOriginalImage; // 原始图片
* UIImagePickerControllerEditedImage; // 裁剪后图片
* UIImagePickerControllerCropRect; // 图片裁剪区域(CGRect)
* UIImagePickerControllerMediaURL; // 媒体的URL
* UIImagePickerControllerReferenceURL // 原件的URL
* UIImagePickerControllerMediaMetadata // 当数据来源是相机时,此值才有效
*/
// 从info中将图片取出,并加载到imageView当中
self.image =[info objectForKey:UIImagePickerControllerEditedImage];
// self.image = [info objectForKey:UIImagePickerControllerOriginalImage];
self.TouXiangImg.image = self.image;
// self.imgstr1=[info objectForKey:UIImagePickerControllerImageURL];
NSLog(@"imgstr1%@",self.imgstr1);
if (self.image != nil){
[self uploadImage:self.image];
//只有正面需要解析
//先解析 解析成功再上传服务器
//压缩图片
// NSData * imageData = [NSData zipNSDataWithImage:self.image];
//对图片base64编码
// _encodeImgStr = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}else{
[self uploadImage:self.image];
}
// SEL selectorToCall = @selector(image:didFinishSavingWithError:contextInfo:);
// 将图像保存到相册(第三个参数需要传入上面格式的选择器对象)
// UIImageWriteToSavedPhotosAlbum(self.image, self, selectorToCall, NULL);
}
- (void)uploadImage:(UIImage *)image {
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer= [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:
@"application/json",
@"text/json",
@"text/plain",
@"text/html",
@"image/jpeg",
@"image/png",
@"application/octet-stream",
nil];
NSString * url1 = [NSString stringWithFormat:@"http://180.76.140.22:8070/uploadimage/uploadimage.shtml"];
[manager POST:url1 parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
//压缩图片
NSData *fData = UIImageJPEGRepresentation(image, 0.5);
// NSData * imageData = [NSData zipNSDataWithImage:image];
NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
formatter.dateFormat =@"yyyyMMddHHmmss";
NSString * str = [formatter stringFromDate:[NSDate date]];
NSString * fileName = [NSString stringWithFormat:@"%@.jpg", str];
//上传的参数(上传图片,以文件流的格式)
[formData appendPartWithFileData:fData
name:@"image"
fileName:fileName
mimeType:@"image/jpeg"];
} progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSData *data=responseObject;
NSString *strutf=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSUserDefaults *user=[NSUserDefaults standardUserDefaults];
NSDictionary *dict=@{@"webUserId":[user objectForKey:@"ID"],@"avatar":strutf};
AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
manager.responseSerializer=[AFHTTPResponseSerializer serializer];
[manager POST:@"http://180.76.140.22:8070/HxWebuser/updateAvatar.shtml?" parameters:dict progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSDictionary *json=[NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
NSData *data1=responseObject;
NSString *strutf1=[[NSString alloc]initWithData:data1 encoding:NSUTF8StringEncoding];
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"修改成功--%@",strutf);
}];
NSLog(@"上传成功--%@",strutf);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"上传失败--%@",error);
}];
}
// 取消选取调用的方法
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[self dismissViewControllerAnimated:YES completion:nil];
}
//添加保存图片完成后的回调方法:
// 保存图片后到相册后,回调的相关方法,查看是否保存成功
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
if (error == nil){
NSLog(@"Image was saved successfully.保存成功");
AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
manager.responseSerializer=[AFHTTPResponseSerializer serializer];
} else {
NSLog(@"An error happened while saving the image.");
NSLog(@"Error = %@", error);
}
}
///截取
NSString *imgstr=[[json objectForKey:@"data"]objectForKey:@"avatarPrefix"];
NSString *string = [NSString stringWithFormat:@"%@", imgstr];
string = [string stringByReplacingOccurrencesOfString:@"\"" withString:@""];
NSLog(@"截取的值为:%@",string);
//后台数据 http://180.76.140.22/\"head/de4f1d8c-bbe8-40f5-a823-6c3f7a7e744a.jpg\"
ios 图片上传与截取后台返回的\"
最新推荐文章于 2022-06-14 10:09:06 发布