UIImagePickerControllerOriginalImage против исходных данных актива

В приложении, которое я разрабатываю, я использую изображение, которое пользователь выбирает из своего фотоальбома. Мне нужно загрузить версию этой фотографии в высоком разрешении на мой сервер.

Я использую 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]);
                         }]; 
        }

person jessieloo    schedule 10.09.2012    source источник
comment
Я использую вариант 2 без разрешения на местоположение, и он может получить это изображение. (Я все еще не могу использовать ALAssetsLibrary для доступа ко всей библиотеке.) Это работает на iOS 5 и iOS 6.   -  person Aaron Brager    schedule 07.02.2013


Ответы (1)


Я провел тест, сравнивая изображения, используя оба варианта. При использовании варианта 1 образ был вдвое больше (4,22 МБ против 2,04 МБ). Глядя на фото в фотошопе, особой разницы в качестве не заметил. Если посмотреть на уровни, то уровень, созданный вариантом 1, был не таким гладким (изображение ниже). при просмотре свойств файлов в файле, созданном по варианту 1, отсутствовали некоторые параметры «происхождение», «камера» и «расширенные фото», которые были у файла, созданного по варианту 2. Я еще не решил, какой способ я собираюсь использовать, но, надеюсь, эта информация поможет кому-то еще!

уровни в Photoshop

person jessieloo    schedule 19.09.2012