PHImageManager를 이용한 앨범의 Thumbnail 로 이용할 사진 이미지 불러오기
<참조>
https://developer.apple.com/reference/photos/phimagemanager
앨범 리스트에서 앨범의 Thumbnail 이미지로 사용 될 이미지를 불러오도록 하겠습니다.
PHFetchResult 에 특정앨범의 이미지타입의 파일을 가져와 마지막에 있는 이미지 파일(최근 날짜 이미지)로 가져오도록 한다.
<주요기능을 담당하는 코드>
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.Image.rawValue)
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.Image.rawValue)
앨범 정보 가져오기>
let assetsFetchResult: PHFetchResult = PHAsset.fetchAssetsInAssetCollection(AlbumsResult, options: fetchOptions)
let assetsFetchResult: PHFetchResult = PHAsset.fetchAssetsInAssetCollection(AlbumsResult, options: fetchOptions)
마지막 사진이미지 선택
let imageAsset = assetsFetchResult.lastObject as? PHAsset
이미지 로드
manager.requestImageForAsset(imageAsset, targetSize: CGSize, contentMode: .AspectFill, options: requestOptions, resultHandler: { (image, info) -> Void in ..
<완성된 코드>
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) {
// 앨범 타이틀을 이용해 특정 앨범의 사진들을 가져온다
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.Image.rawValue)
let manager = PHImageManager.defaultManager()
let assetsFetchResult: PHFetchResult = PHAsset.fetchAssetsInAssetCollection(AlbumsResult, options: fetchOptions)
if assetsFetchResult.count > 0 {
// 가져온 사진중 마지막 사진을 선택하고
if let imageAsset = assetsFetchResult.lastObject as? PHAsset {
// 불러올 사진의 이미지 옵션값을 넣은 다음
let requestOptions = PHImageRequestOptions()
requestOptions.synchronous = false
requestOptions.deliveryMode = .HighQualityFormat
//requestImageForAsset 을 이용해 이미지를 불러온다
manager.requestImageForAsset(imageAsset, targetSize: groesse, contentMode: .AspectFill, options: requestOptions, resultHandler: { (image, info) -> Void in
completion(image: image)
})
} else {
completion(image: nil)
}
} else {
completion(image: nil)
}
}
}
// 앨범 타이틀을 이용해 특정 앨범의 사진들을 가져온다
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.Image.rawValue)
let manager = PHImageManager.defaultManager()
let assetsFetchResult: PHFetchResult = PHAsset.fetchAssetsInAssetCollection(AlbumsResult, options: fetchOptions)
if assetsFetchResult.count > 0 {
// 가져온 사진중 마지막 사진을 선택하고
if let imageAsset = assetsFetchResult.lastObject as? PHAsset {
// 불러올 사진의 이미지 옵션값을 넣은 다음
let requestOptions = PHImageRequestOptions()
requestOptions.synchronous = false
requestOptions.deliveryMode = .HighQualityFormat
//requestImageForAsset 을 이용해 이미지를 불러온다
manager.requestImageForAsset(imageAsset, targetSize: groesse, contentMode: .AspectFill, options: requestOptions, resultHandler: { (image, info) -> Void in
completion(image: image)
})
} else {
completion(image: nil)
}
} else {
completion(image: nil)
}
}
}
댓글 없음:
댓글 쓰기