0
A
回答
1
的PHImageManagerClass
有方法:
- requestImageForAsset:targetSize:contentMode:options:resultHandler:
1
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.resizeMode = PHImageRequestOptionsResizeModeExact;
NSInteger retinaMultiplier = [UIScreen mainScreen].scale;
CGSize retinaSquare = CGSizeMake(imageView.bounds.size.width * retinaMultiplier, imageView.bounds.size.height * retinaMultiplier);
[[PHImageManager defaultManager]
requestImageForAsset:(PHAsset *)_asset
targetSize:retinaSquare
contentMode:PHImageContentModeAspectFill
options:options
resultHandler:^(UIImage *result, NSDictionary *info) {
imageView.image =[UIImage imageWithCGImage:result.CGImage scale:retinaMultiplier orientation:result.imageOrientation];
}];
+0
我得到这个错误”终止应用程序由于未捕获的异常'NSInvalidArgumentException',原因:' - [PHAssetCollection isCloudSharedAsset]:无法识别的选择器发送到实例“ – Peter
0
这个答案下面是斯威夫特4一个完整的答案,显示针对它的函数调用&。此外,请确保您的plist中设置了照片隐私标志。
import Photos
func requestImage(for asset: PHAsset,
targetSize: CGSize,
contentMode: PHImageContentMode,
completionHandler: @escaping (UIImage?) ->()) {
let imageManager = PHImageManager()
imageManager.requestImage(for: asset,
targetSize: targetSize,
contentMode: contentMode,
options: nil) { (image, _) in
completionHandler(image)
}
}
let asset = // your existing PHAsset
let targetSize = CGSize(width: 100, height: 100)
let contentModel = PHImageContentMode.aspectFit
requestImage(for: asset, targetSize: targetSize, contentMode: contentModel, completionHandler: { image in
// Do something with your image if it exists
})
0
万一有人正在寻找一个快速的解决方案,这里是一个扩展:
extension PHAsset {
var thumbnailImage : UIImage {
get {
let manager = PHImageManager.default()
let option = PHImageRequestOptions()
var thumbnail = UIImage()
option.isSynchronous = true
manager.requestImage(for: self, targetSize: CGSize(width: 300, height: 300), contentMode: .aspectFit, options: option, resultHandler: {(result, info)->Void in
thumbnail = result!
})
return thumbnail
}
}
}
相关问题
- 1. 从JSON获取缩略图
- 2. 可以从库的PHAsset获取图像
- 3. 从vimeo获取视频缩略图
- 4. FFmpegPHP从外部URL获取缩略图
- 5. 从网页获取缩略图
- 6. 从Liferay获取缩略图流
- 7. OpenCV从缓冲区获取缩略图
- 8. android:从blobstore获取缩略图
- 9. 从Youtube获取缩略图并保存
- 10. 从json获取缩略图Android
- 11. 从liveleak获取img缩略图?
- 12. 解析云 - 从URL获取缩略图
- 13. 从input type =“file”获取缩略图
- 14. 获取flickr缩略图
- 15. 获取缩略图在ASP.NET
- 16. 获取缩略图,XML
- 17. 获取Matterport缩略图
- 18. WordPress的获取缩略图
- 19. GData Youtube:获取缩略图
- 20. Android获取缩略图Uri从相机获取图片后
- 21. 试图获取视频缩略图
- 22. 获得空的结果试图从PHAsset
- 23. 从CGPDFPageRef提取缩略图图像
- 24. 快速获取PHAsset信息?
- 25. 获取iPhone视频缩略图
- 26. onclick获取缩略图网址ID值
- 27. 获取联系人缩略图
- 28. 如何获取视频缩略图?
- 29. 获取背景窗口的缩略图
- 30. 获取屏幕视频缩略图url
我得到这个错误“终止应用程序由于未捕获的异常‘NSInvalidArgumentException’,原因是:“ - [PHAssetCollection isCloudSharedAsset ]:无法识别的选择器发送到实例“ – Peter