Как загружать фотографии как приложение для фотографий - PullRequest
1 голос
/ 27 октября 2011

Я реализовал свой собственный UIImagePickerController, который позволяет пользователю получать доступ к изображениям из своих библиотек фотографий.Как и в традиционном UIImagePickerController, пользователь выбирает фотографию из списка миниатюр, и затем фотография отображается на следующем экране.Я использую библиотеку ALAssets для этого.

Проблема, которую я пытаюсь решить, заключается в том, как загрузить изображение, как приложение для фотографий, после выбора его миниатюры.Загрузка фотографий большего размера может занять некоторое время, что приведет к небольшому сбоям и сделает переход очень плавным.

Похоже, что приложение для фотографий сначала загружает миниатюру изображения, а затем обновляет его полным изображением после завершения загрузки.Я смог сделать это с помощью следующего кода, используя функцию [ALAsset aspectRatioThumbnail]:

UIImageView *imageViewTemp = [[UIImageView alloc] initWithImage: [UIImage imageWithCGImage:[self.asset aspectRatioThumbnail]]];
[self setImageView: imageViewTemp];
[[self scrollView] addSubview:[self imageView]];
[[self scrollView] setContentSize: [self.imageView.image size]];
[self setMaxMinZoomScalesForCurrentBounds];
[[self scrollView] setZoomScale: [[self scrollView] minimumZoomScale]]; 
[imageViewTemp release];

dispatch_async(dispatch_get_global_queue(0, 0), ^
{
    CGImageRef imageRef = CGImageCreateCopy(self.asset.defaultRepresentation.fullScreenImage);

    dispatch_async(dispatch_get_main_queue(), ^
    {
        UIImage *image = [[UIImage imageWithCGImage: imageRef] retain];
        [[self imageView] setImage: image];
        [image release];
        CGImageRelease(imageRef);
    });

});

Проблема с этим кодом в том, что aspectRatioThumbnail работает только для ios 5 или выше, плюс я заметил, что дажес aspectRatioThumbnail возможен небольшой сбой для больших изображений перед их кэшированием.

Так что я поиграл с использованием [asset thumbnail], однако проблема в том, что миниатюра, которая возвращается, является квадратной, поэтому она выглядит забавно, когда вы загружаете реальное изображение.Я попытался найти некоторые способы получить размер полноразмерного изображения, чтобы я мог растянуть его, но не похоже, что есть отличный способ сделать это (http://stackoverflow.com/questions/10067765/alasset-image-size).

Так что мне просто интересноесли кто-нибудь знает, как это сделать, это будет работать для ios4 и выше и работать довольно гладко. Возможно, что [ALAssetRepresentation CGImageWithOptions] может содержать ответ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...