2016-07-09 6 views
3

이미지 선택기에서 이미지를 선택하고 PHAsset을 UIImage 이미지로 변환하려고하면 PNG 이미지의 투명도가 손실됩니다. 어디에서나 검색해 보았지만 아무 것도 찾지 못했습니다.PHAsset을 UIImage로 변환하는 동안 투명도가 손실 됨

func getAssetThumbnail(asset: PHAsset) -> UIImage { 
     let manager = PHImageManager.defaultManager() 
     let option = PHImageRequestOptions() 
     var thumbnail = UIImage() 
     option.synchronous = true 
     manager.requestImageForAsset(asset, targetSize: CGSize(width: 341.0, height: 182.0), contentMode: .AspectFit, options: option, resultHandler: {(result, info)->Void in 
      thumbnail = result! 
     }) 
     return thumbnail 
    } 

이미지

IMAGE BEFORE

전에 선택한 이미지보기로 설정 한 후

AFTER SELECTING AND SETTING IT TO IMAGE VIEW

+0

즉, 이미지를 만들 원본 이미지 데이터를 사용하여 시도 가지고 PHImageRequestOptions.version ='와'requestImageDataForAsset'를 호출합니다. 원본 '. 그런 다음 UIImage (data : data)에서 이미지를 생성 할 수 있습니다. –

+0

아니, 나는 두 번째를 붙잡 으려고 애쓴다. –

+0

@LukeVanIn 나는 일하지 않았다. –

답변

3

requestImageDataForAssetPHImageRequestOptions.version = . Original을 호출하여 원본 이미지 데이터를 가져옵니다. 그런 다음 UIImage(data: data)에서 이미지를 만들 수 있습니다.

예 :

func getThumbnail(asset: PHAsset) -> UIImage? { 

    var thumbnail: UIImage? 

    let manager = PHImageManager.defaultManager() 

    let options = PHImageRequestOptions() 

    options.version = .Original 
    options.synchronous = true 

    manager.requestImageDataForAsset(asset, options: options) { data, _, _, _ in 

     if let data = data { 
      thumbnail = UIImage(data: data) 
     } 
    } 

    return thumbnail 
} 
+0

이미지가 내부 블록에서 설정 될 때 nil somethimes를 반환합니다.이 문제에 대한 해결책이 있습니까 ??? –