달력

12

« 2014/12 »

  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  

'2014/12'에 해당되는 글 1

  1. 2014.12.22 iOS8에서 편집된 사진 제대로 읽어오는 방법..

우선 iOS7 까지는 전에 포스팅했던 그 방법대로 가져오면 된다.


http://donobono.tistory.com/2


요즘 한창 스토리 앱에 아이폰6 대응을 하고 있는데 별 생각없이 크롭된 사진을 올려봤더니 원본 비율의 사진이 올라가는 것을 발견했고 디버깅을 해보니 iOS8부터는 메타 데이터에 사진이 편집된 정보를 담고 있던 AdjustmentXMP 요 부분이 없는 것을 발견할 수 있었다..


애플아.. 뭔가 새로 만드는건 참 좋고 고맙고 설레고 호기심 생기고 막 그러는데.. 잘 되던거에서 뭔가 빼는건 좀 거시기하잖냐.. 첨에 카메라롤땜에 그 삽질을 하더니 사진쪽 왜 자꾸 이래.. Photokit 잘 만든거 이해하는데 정말 이러지는 좀 말자.. 응?


암턴.. 그래서 iOS8부터는 그 잘난 Photokit을 사용해서 이미지를 불러오면 되고, Photokit에서는 기본적으로 편집된 사진의 원본 사이즈로 읽어오도록 되어있다..


또 서론이 길었네.. 소스보자..



        ALAssetRepresentation *rep = [myasset defaultRepresentation];
        CGFloat scale = [UIScreen mainScreen].scale;
        CGSize targetSize = CGSizeMake(CGRectGetWidth([UIScreen mainScreen].bounds) * scale, CGRectGetHeight([UIScreen mainScreen].bounds) * scale);

        PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
        
        // Download from cloud if necessary
        options.networkAccessAllowed = NO;
        options.synchronous = YES;
        
        PHFetchResult *phResult = [PHAsset fetchAssetsWithALAssetURLs:@[self.asset.defaultRepresentation.url] options:nil];
        if (phResult == nil)
            return nil;
        
        PHAsset *asset = phResult.firstObject;
        __block UIImage *iResult = nil;
        
        [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:targetSize contentMode:PHImageContentModeAspectFit options:options resultHandler:^(UIImage *result, NSDictionary *info) {
            
            iResult = result;
        }];
        
        return iResult;



다행히 ALAsset에서 PHAsset으로 쉽게 변환이 가능하기도 하고 이전 방법은 Core Image를 통해 이미지를 읽어오다보니 속도가 좀 느린편이었는데 새로운 방법으로는 그런게 전혀 없이 바로 사진이 읽혀져서 확실히 좋아지긴 했다.. 인정할건 인정해야지.. Photokit 잘 만들긴 했다.. 사실 진작부터 됐어야 하는 기능들이 이제서야 됐다는 생각도 들긴 하지만..


Photokit은 시간내서 좀더 연구해볼 필요는 있을 것 같다.. CameraW가 ALAseet URL을 저장하고 있다가 앨범에 보여주는 방식이다보니 앨범 화면에서 사진들을 지울 수 없는 치명적인 단점이 있었는데 Photokit을 사용하면 삭제도 가능해지고 필터먹인 후에도 새로 저장하는게 아니라 바로 그 사진에 적용하는게 가능해지기 때문인데.. 언제 하지? -_-a


Posted by 도노보노