В приложении, которое я разрабатываю, я использую изображение, которое пользователь выбирает из своего фотоальбома. Мне нужно загрузить версию этой фотографии в высоком разрешении на мой сервер.
Я использую imagePickerController и определил, что у меня есть 2 варианта.
- использовать UIImage из UIImagePickerControllerOriginalImage
- получить исходный актив, используя UIImagePickerControllerReferenceURL и ALAssetsLibrary assetsForURL (мне это не нравится, потому что предлагает пользователю использовать свое текущее местоположение, что мне не нужно)
Мой вопрос: Есть ли разница в качестве изображения, если я использую первый вариант по сравнению со вторым?
-(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]);
}];
}