美文网首页
iOS 中常见的设置、保存、上传图片

iOS 中常见的设置、保存、上传图片

作者: Heikki_ | 来源:发表于2017-09-22 17:34 被阅读41次

    1.选择图片获取方式

    -(void)doChange{
        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
        
        __weak typeof(self) weakSelf = self;
        UIAlertAction *camera = [UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            //判断是否可以打开相机,模拟器无法使用此功能
            if ([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront]) {
                UIImagePickerController *pic = [[UIImagePickerController alloc]init];
                pic.sourceType = UIImagePickerControllerSourceTypeCamera;
                pic.delegate = (id)weakSelf;
                pic.editing = YES;
                pic.allowsEditing = YES;
                [weakSelf presentViewController:pic animated:YES completion:nil];
            }
        }];
        
        UIAlertAction *album = [UIAlertAction actionWithTitle:@"从相册选择" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            
            UIImagePickerController *pic = [[UIImagePickerController alloc]init];
            pic.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
            pic.delegate = (id)weakSelf;
            pic.editing = YES;
            pic.allowsEditing = YES;
            pic.editing = YES;
            [weakSelf presentViewController:pic animated:YES completion:nil];
        }];
        
        UIAlertAction *action = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
        }];
        //修改单个按钮字体颜色
        camera.textColor = [UIColor hs_colorWithHex:0x5e5163];
        album.textColor = [UIColor hs_colorWithHex:0x5e5163];
        action.textColor = [UIColor hs_colorWithHex:0x9a9a9a];
        
        [alertController addAction:camera];
        [alertController addAction:album];
        [alertController addAction:action];
        [self presentViewController:alertController animated:YES completion:nil];
    }
    
    #pragma mark - UIImagePickerController的代理
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
        [picker dismissViewControllerAnimated:YES completion:nil];
        //获得选中图片
        _image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
        //裁剪image的尺寸
        CGSize imagesize = _image.size;
        imagesize.height = 400;
        imagesize.width = 400;
        _image = [self imageWithImage:_image scaledToSize:imagesize];
    
        [self.sessionManager POST:URLStr parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        } progress:^(NSProgress * _Nonnull uploadProgress) {
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        }];
    }
    
    - (AFHTTPSessionManager *)sessionManager {
        if (_sessionManager == nil) {
            _sessionManager = [AFHTTPSessionManager manager];
            _sessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
            _sessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
            NSSet *set = [NSSet setWithObjects:@"text/plain", @"text/html", nil];
            _sessionManager.responseSerializer.acceptableContentTypes = [_sessionManager.responseSerializer.acceptableContentTypes setByAddingObjectsFromSet:set];
        }
        return _sessionManager;
    }
    
    
    

    对图片尺寸进行压缩

    -(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize{
        UIGraphicsBeginImageContext(newSize);
        [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
        UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return newImage;
    }
    

    保存图片至沙盒

    -(void)saveImage:(UIImage *)currenrImage WithName:(NSString *)imageName{
        NSData *imageData = UIImageJPEGRepresentation(currenrImage, 1);
        NSString *fullPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:imageName];
        [imageData writeToFile:fullPath atomically:NO];
    }
    

    相关文章

      网友评论

          本文标题:iOS 中常见的设置、保存、上传图片

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