2013-11-16 4 views
2

Я создал службу индексирования изображений (локальный, Facebook, Picassa, Instagram и т. Д.).AssetLibrary - как загрузить коррекцию ориентации?

В представлении коллекции двойное касание вытолкнет изображение из ячейки, чтобы стать полноразмерным. Для местных источников иногда используется неправильная ориентация. , Как я могу заставить его использовать ориентацию устройства (пейзаж), даже если фотография лучше вписывается в режим движения?

Вот метод для загрузки индексированную актива из библиотеки местных активов:

- (void)performLoadFor:(GTPImage*)image onSuccess:(void (^)(UIImage*))onSuccess onError:(void (^)(NSError*))onError 
{ 
    [_assetsLibrary assetForURL:[NSURL URLWithString:image.address] resultBlock:^(ALAsset* asset) 
    { 
     if (onSuccess) 
     { 
      CGImageRef imageRef = [[asset defaultRepresentation] fullResolutionImage]; 
      onSuccess([UIImage imageWithCGImage:imageRef]); 
     } 
    } failureBlock:^(NSError* error) 
    { 
     onError(error); 
    }]; 
} 

ответ

5

Эта статья объясняет это очень хорошо: http://biasedbit.com/alasset-image-orientation/

Это, как вы получаете ориентацию изображения из актива:

// Retrieve the image orientation from the ALAsset 
UIImageOrientation orientation = UIImageOrientationUp; 
NSNumber* orientationValue = [asset valueForProperty:@"ALAssetPropertyOrientation"]; 
if (orientationValue != nil) { 
    orientation = [orientationValue intValue]; 
} 

Вы также можете попробовать использовать [ALAssetRepresentation orientation] и создать изображение следующим образом:

UIImage* image = [UIImage imageWithCGImage:ref scale:1.0f orientation:(UIImageOrientation)[rep orientation]]; 

Кажется, работает на меня.

Смежные вопросы