2016-07-19 8 views
0

PHImageManager로 UIImages를 가져 오는 것과 관련하여 이상한 문제가 있습니다.사진 라이브러리에서 편집하여 PHImageManager가 사진을 잘못 받아 들임

요청한 UIImage가 iPhone의 사진 앱에서 편집되지 않은 경우 모두 정상적으로 작동합니다. 사용자가 아이폰의 자기 사진 편집기에서 사진을 편집 한 경우 (즉, s는/그는 사진을 잘립니다) 것을

[[PHImageManager defaultManager] requestImageForAsset:[assets objectAtIndex:0] targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeDefault options:requestOptions resultHandler:^void(UIImage *image, NSDictionary *info) 
     { 
      DebugLog(@"%ld", assets.count); 
      @autoreleasepool 
      { 
       if (image) 
       { 
        // Write image to system 
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
        NSString *fileName = [NSString stringWithFormat:@"%ld_%@.jpg", (long)assets.count, [NSDate date]]; 
        NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:fileName]; 
        [UIImageJPEGRepresentation(image, 0.5) writeToFile:filePath atomically:YES]; 

       } 
     }]; 

그러나 경우에

PHImageManager은 사진을 검색하는 데 실패합니다.

그러나 사전이된다 사진 응용 프로그램에서을 편집 한 후

{ 
PHImageFileOrientationKey = 0; 
PHImageFileSandboxExtensionTokenKey = "5565e83d376d8c4e018b8ea41401e58e5aabbc18;00000000;00000000;000000000000001a;com.apple.app-sandbox.read;00000001;01000003;000000000039a762;/private/var/mobile/Media/DCIM/113APPLE/IMG_3433.PNG"; 
PHImageFileURLKey = "file:///var/mobile/Media/DCIM/113APPLE/IMG_3433.PNG"; 
PHImageFileUTIKey = "public.png"; 
PHImageResultDeliveredImageFormatKey = 9999; 
PHImageResultIsDegradedKey = 0; 
PHImageResultIsInCloudKey = 0; 
PHImageResultIsPlaceholderKey = 0; 
PHImageResultOptimizedForSharing = 0; 
PHImageResultRequestIDKey = 55; 
PHImageResultWantedImageFormatKey = 9999; 

} :를 편집하지 않고

는 resultHandler에서 제공하는 사전은 "정보"라고하는 정상

{ 
PHImageFileOrientationKey = 0; 
PHImageResultDeliveredImageFormatKey = 4031; 
PHImageResultIsDegradedKey = 1; 
PHImageResultRequestIDKey = 56; 
PHImageResultWantedImageFormatKey = 9998; 

이전에이 문제에 직면 한 사람이 있습니까?

답장을 보내 주셔서 감사합니다.

답변

0

오키 나는 무슨 일이 일어나는지 알아 낸다.

PHImageRequestOptions에는 다음을 추가하여 보정되지 않은 버전의 사진을 선택할 수있는 옵션이 있습니다.

requestOptions.version = PHImageRequestOptionsVersionUnadjusted; 

이렇게하면 이미지를 얻을 수 있지만 (조정되지 않은 형식 임).

아무도 이미지를 조정하지 않고도 해결책을 찾을 수 있습니다. 저에게 의견을 말하십시오.

건배.

0

지금은 너무 늦어서 도움을 주지만 다른 사람이 앞으로도 동일한 문제가 발생할 수 있습니다.

PHImageRequestOptionsVersionUnadjusted 대신 PHImage​Request​Options​Delivery​Mode​High​Quality​Format을 사용하십시오.

사진 걸리는 얼마나 많은 시간에 상관없이 사용할 수 오직 최고 품질의 이미지, 을 제공합니다 : 당신이 highQualityFormat에 대한 문서를 선택하면

또는 스위프트 사용

,

requestOptions.deliveryMode = PHImageRequestOptionsDeliveryMode.highQualityFormat 

로드합니다. isSynchronous 속성이 이거나 requestImageData (: options : resultHandler :) 메서드를 사용하는 경우이 동작은 기본값이며 유일한 옵션입니다. 즉, 다른 배달 모드 옵션을 지정해도 아무런 영향이 없습니다.

+0

참고 : PHImageRequestOptionsVersion 및 PHImageRequestOptionsDeliveryMode는 다른 열거 형입니다. – BangOperator