在我正在开发的应用程序中,我使用的是用户从他们的相册中选择的图像。我需要将该照片的高分辨率版本上传到我的服务器。
我正在使用 imagePickerController 并且我确定我有 2 个选项
- 使用 UIImagePickerControllerOriginalImage 中的 UIImage
- 通过使用 UIImagePickerControllerReferenceURL 和 ALAssetsLibrary assetForURL 获取原始资产(我不喜欢这样,因为它会提示用户使用他们当前的位置,我不需要)
我的问题是......如果我使用第一个选项和第二个选项,图像质量有什么区别吗?
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
//option 1
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
NSData *imgData = UIImagePNGRepresentation(image);
// option 2 (will prompt user to allow use of current location)
NSURL *imgURL = [info objectForKey:@"UIImagePickerControllerReferenceURL"];
__block NSData* imgData;
ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init];
[assetLibrary assetForURL:img resultBlock:^(ALAsset *asset)
{
ALAssetRepresentation *rep = [asset defaultRepresentation];
Byte *buffer = (Byte*)malloc(rep.size);
NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil];
imgData = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];
}
failureBlock:^(NSError *err) {
NSLog(@"Error: %@",[err localizedDescription]);
}];
}