12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- //
- // JXHPhotoManager.h
- // 我的社保
- //
- // Created by shanp on 2020/9/15.
- //
- #import <Foundation/Foundation.h>
- #import <AssetsLibrary/AssetsLibrary.h>
- #import <Photos/Photos.h>
- #import "JXHPhotoAlbumConfiguration.h"
- @class JXHPhotoAlbum;
- NS_ASSUME_NONNULL_BEGIN
- @interface JXHPhotoManager : NSObject
- @property (nonatomic, strong) PHAsset *jxh_phAsset;
- @property (nonatomic, strong, nullable) AVPlayerItem *jxh_playItem;
- @property (nonatomic, assign) NSUInteger jxh_index;
- - (void)getCover;
- /// Asset 的原图(包含系统相册“编辑”功能处理后的效果)
- - (nullable UIImage *)originImage;
- /**
- * 异步请求 Asset 的原图,包含了系统照片“编辑”功能处理后的效果(剪裁,旋转和滤镜等),可能会有网络请求
- *
- * @param completion 完成请求后调用的 block,参数中包含了请求的原图以及图片信息,在 iOS 8.0 或以上版本中,
- * 这个 block 会被多次调用,其中第一次调用获取到的尺寸很小的低清图,然后不断调用,直接获取到高清图,
- * 获取到高清图后 QMUIAsset 会缓存起这张高清图,这时 block 中的第二个参数(图片信息)返回的为 nil。
- * @param phProgressHandler 处理请求进度的 handler,不在主线程上执行,在 block 中修改 UI 时注意需要手工放到主线程处理。
- *
- * @wraning iOS 8.0 以下中并没有异步请求预览图的接口,因此实际上为同步请求,这时 block 中的第二个参数(图片信息)返回的为 nil。
- */
- - (void)requestOriginImageWithCompletion:(void (^_Nullable)(UIImage *_Nullable, NSDictionary *_Nullable))completion withProgressHandler:(nullable PHAssetImageProgressHandler)phProgressHandler;
- /**
- * Asset 的缩略图
- *
- * @param size 指定返回的缩略图的大小,仅在 iOS 8.0 及以上的版本有效,其他版本则调用 ALAsset 的接口由系统返回一个合适当前平台的图片
- *
- * @return Asset 的缩略图
- */
- - (nullable UIImage *)thumbnailWithSize:(CGSize)size contentMode:(JXHImageContentMode)imageContentMode;
- /**
- * 异步请求 Asset 的缩略图,不会产生网络请求
- *
- * @param size 指定返回的缩略图的大小,仅在 iOS 8.0 及以上的版本有效,其他版本则调用 ALAsset 的接口由系统返回一个合适当前平台的图片
- * @param completion 完成请求后调用的 block,参数中包含了请求的缩略图以及图片信息,在 iOS 8.0 或以上版本中,这个 block 会被多次调用,
- * 其中第一次调用获取到的尺寸很小的低清图,然后不断调用,直接获取到高清图,获取到高清图后 QMUIAsset 会缓存起这张高清图,
- * 这时 block 中的第二个参数(图片信息)返回的为 nil。
- */
- - (void)requestThumbnailImageWithSize:(CGSize)size contentMode:(JXHImageContentMode)imageContentMode completion:(void (^_Nullable)(UIImage *_Nullable, NSDictionary *_Nullable))completion;
- /**
- * Asset 的预览图
- *
- * @warning 仿照 ALAssetsLibrary 的做法输出与当前设备屏幕大小相同尺寸的图片,如果图片原图小于当前设备屏幕的尺寸,则只输出原图大小的图片
- * @return Asset 的全屏图
- */
- - (nullable UIImage *)previewImageWithSize:(CGSize)size;
- /**
- * 异步请求 Asset 的预览图,可能会有网络请求
- *
- * @param completion 完成请求后调用的 block,参数中包含了请求的预览图以及图片信息,在 iOS 8.0 或以上版本中,
- * 这个 block 会被多次调用,其中第一次调用获取到的尺寸很小的低清图,然后不断调用,直接获取到高清图,
- * 获取到高清图后 QMUIAsset 会缓存起这张高清图,这时 block 中的第二个参数(图片信息)返回的为 nil。
- * @param phProgressHandler 处理请求进度的 handler,不在主线程上执行,在 block 中修改 UI 时注意需要手工放到主线程处理。
- *
- * @wraning iOS 8.0 以下中并没有异步请求预览图的接口,因此实际上为同步请求,这时 block 中的第二个参数(图片信息)返回的为 nil。
- */
- - (void)requestPreviewImageWithSize:(CGSize)size completion:(void (^_Nullable)(UIImage *_Nullable, NSDictionary *_Nullable))completion progressHandler:(PHAssetImageProgressHandler)phProgressHandler;
- - (void)requestVideoWithCompletion:(void (^_Nullable)(AVPlayerItem *_Nullable, NSDictionary *_Nullable))completion progressHandler:(nullable PHAssetVideoProgressHandler)progressHandler;
- - (void)cleanCache;
- @end
- NS_ASSUME_NONNULL_END
|