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

2017-09-22  本文已影响41人  Heikki_

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];
}
上一篇下一篇

猜你喜欢

热点阅读