ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

如何从JFImagePickerController获取选中的照片?ALAsset与UIImage接口完全参考

2026/8/22 14:07:39 拓冰建站 浏览量
如何从JFImagePickerController获取选中的照片?ALAsset与UIImage接口完全参考 如何从JFImagePickerController获取选中的照片ALAsset与UIImage接口完全参考【免费下载链接】JFImagePickerController高性能多选图片库项目地址: https://gitcode.com/gh_mirrors/jf/JFImagePickerControllerJFImagePickerControllerCocoaPods 包名 JFImagePicker是一款面向 iOS 的高性能多选图片选择库核心功能包括多选照片、预览已选照片、针对超大图片的加载优化。本文以“如何获取选中的照片”为主线完整梳理 ALAsset 与 UIImage 相关的接口用法帮助新手快速上手避免常见的内存陷阱。一、获取选中的照片assets 属性完全参考用户点击“完成”后delegate 会回调imagePickerDidFinished:此时通过picker.assets即可拿到全部选中的ALAsset数组- (void)imagePickerDidFinished:(JFImagePickerController *)picker{ NSArray *selectedAssets picker.assets; // 用户选中的照片ALAsset 数组 [picker dismissViewControllerAnimated:YES completion:nil]; } - (void)imagePickerDidCancel:(JFImagePickerController *)picker{ [picker dismissViewControllerAnimated:YES completion:nil]; }完整示例可参考 ViewController.m。官方文档中也给出了同样的接入方式见 README.md。 选中的ALAsset只是“照片引用”并不是图片数据本身。真正取出图片需要下面介绍的接口。二、ALAsset 转 UIImage 的三种方法核心接口集中在 JFImageManager.h场景接口说明加载缩略图thumbWithAsset:resultHandler:异步返回 UIImage先给小图再给大图加载原图/超长图imageWithAsset:resultHandler:返回 CGImageRef 是否超长图标记批量获取imagesWithType:一次拿到选中照片的 UIImage 数组1. 加载缩略图列表、九宫格场景首选[[JFImageManager sharedManager] thumbWithAsset:asset resultHandler:^(UIImage *result) { // result 是 UIImage回调保证在主线程可直接赋值给 UIImageView }];该方法的策略很友好先立即回调系统小缩略图后台再计算并回调更高质量的图列表滚动时几乎无卡顿实现见 JFImageManager.m。2. 加载原图上传、编辑场景[[JFImageManager sharedManager] imageWithAsset:asset resultHandler:^(CGImageRef imageRef, BOOL longImage) { UIImage *image [UIImage imageWithCGImage:imageRef]; CGImageRelease(imageRef); // longImage 为 YES 表示这是一张超长图已自动压缩到屏幕宽度不会撑爆内存 }];这是该库的亮点对超长图宽高比超过 2 倍且超出屏幕会智能压缩到屏幕宽度返回规避CGImage解码超大图导致的崩溃实现见 JFImageManager.m。3. 批量获取不同尺寸的 UIImage 数组JFImagePickerController还封装了一个便捷方法 imagesWithType:一次取出全部选中照片对应尺寸的 UIImage 数组。type 取值定义在 JFAssetHelper.h0小缩略图约 120pt1宽高比缩略图约 320pt2屏幕尺寸3全分辨率原图NSArray *thumbs [picker imagesWithType:0]; // 批量拿缩略图⚠️ 批量取type:3原图只建议一次处理一张避免多张原图同时驻留内存。三、清理缓存不要遗漏的 clear退出编辑模式时必须调用类方法 clear用来清理已选照片的缓存与内存[JFImagePickerController clear];它内部会同时清理JFAssetHelper的选中数据与JFImageManager的NSCache图片缓存是防止内存持续增长的关键一步。四、接入步骤速查在 Podfile 中加入pod JFImagePicker最低支持 iOS 7.0创建 picker 并设置 delegate[[JFImagePickerController alloc] initWithRootViewController:nil]在imagePickerDidFinished:中通过picker.assets获取选中的照片用JFImageManager按需把ALAsset转成 UIImage离开页面时调用[JFImagePickerController clear]释放缓存按以上步骤你就可以完整、安全地从 JFImagePickerController 中拿到选中的照片了。更多功能细节可查阅项目源码中的 JFAssetHelper.h 与 JFImagePickerController.h。【免费下载链接】JFImagePickerController高性能多选图片库项目地址: https://gitcode.com/gh_mirrors/jf/JFImagePickerController创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考