cdts/xdts-ios 3/TreeHole/CYHResetCode/CYH/QMUIKit/QMUIComponents/AssetLibrary/QMUIAssetsManager.h

144 lines
8.0 KiB
C
Raw Normal View History

2023-07-27 09:20:00 +08:00
/**
* Tencent is pleased to support the open source community by making QMUI_iOS available.
* Copyright (C) 2016-2021 THL A29 Limited, a Tencent company. All rights reserved.
* Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
* http://opensource.org/licenses/MIT
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
*/
//
// QMUIAssetsManager.h
// qmui
//
// Created by QMUI Team on 15/6/9.
//
#import <UIKit/UIKit.h>
#import <Photos/PHPhotoLibrary.h>
#import <Photos/PHCollection.h>
#import <Photos/PHFetchResult.h>
#import <Photos/PHAssetChangeRequest.h>
#import <Photos/PHAssetCollectionChangeRequest.h>
#import <Photos/PHFetchOptions.h>
#import <Photos/PHImageManager.h>
#import "QMUIAssetsGroup.h"
@class PHCachingImageManager;
@class QMUIAsset;
/// Asset 授权的状态
typedef NS_ENUM(NSUInteger, QMUIAssetAuthorizationStatus) {
QMUIAssetAuthorizationStatusNotDetermined, // 还不确定有没有授权
QMUIAssetAuthorizationStatusAuthorized, // 已经授权
QMUIAssetAuthorizationStatusNotAuthorized // 手动禁止了授权
};
typedef void (^QMUIWriteAssetCompletionBlock)(QMUIAsset *asset, NSError *error);
/// 保存图片到指定相册(传入 UIImage
extern void QMUIImageWriteToSavedPhotosAlbumWithAlbumAssetsGroup(UIImage *image, QMUIAssetsGroup *albumAssetsGroup, QMUIWriteAssetCompletionBlock completionBlock);
/// 保存图片到指定相册(传入图片路径)
extern void QMUISaveImageAtPathToSavedPhotosAlbumWithAlbumAssetsGroup(NSString *imagePath, QMUIAssetsGroup *albumAssetsGroup, QMUIWriteAssetCompletionBlock completionBlock);
/// 保存视频到指定相册
extern void QMUISaveVideoAtPathToSavedPhotosAlbumWithAlbumAssetsGroup(NSString *videoPath, QMUIAssetsGroup *albumAssetsGroup, QMUIWriteAssetCompletionBlock completionBlock);
/**
* QMUIAssetsManager
* 1. /便
* 2. 使 PhotoKit PHCachingImageManager
* QMUIAssetsManager PHCachingImageManager便
* PHCachingImageManager
*/
@interface QMUIAssetsManager : NSObject
/// 获取 QMUIAssetsManager 的单例
+ (instancetype)sharedInstance;
/// 获取当前应用的“照片”访问授权状态
+ (QMUIAssetAuthorizationStatus)authorizationStatus;
/**
* 访 UIAlertView
* @param handler block线 block UI dispatch mainqueue
*/
+ (void)requestAuthorization:(void(^)(QMUIAssetAuthorizationStatus status))handler;
/**
*
*
* @param contentType
* @param showEmptyAlbum contentType
* @param showSmartAlbumIfSupported "智能相册"
* @param enumerationBlock resultAssetsGroup enumerationBlock
* resultAssetsGroup nil
*/
- (void)enumerateAllAlbumsWithAlbumContentType:(QMUIAlbumContentType)contentType showEmptyAlbum:(BOOL)showEmptyAlbum showSmartAlbumIfSupported:(BOOL)showSmartAlbumIfSupported usingBlock:(void (^)(QMUIAssetsGroup *resultAssetsGroup))enumerationBlock;
/// 获取所有相册,默认显示系统的“智能相册”,不显示空相册(经过 contentType 过滤后为空的相册)
- (void)enumerateAllAlbumsWithAlbumContentType:(QMUIAlbumContentType)contentType usingBlock:(void (^)(QMUIAssetsGroup *resultAssetsGroup))enumerationBlock;
/**
*
*
* @warning
* Asset
* Asset
* 使 PhotoKit PhotoKit SampleCode
*
* @warning
*/
- (void)saveImageWithImageRef:(CGImageRef)imageRef albumAssetsGroup:(QMUIAssetsGroup *)albumAssetsGroup orientation:(UIImageOrientation)orientation completionBlock:(QMUIWriteAssetCompletionBlock)completionBlock;
- (void)saveImageWithImagePathURL:(NSURL *)imagePathURL albumAssetsGroup:(QMUIAssetsGroup *)albumAssetsGroup completionBlock:(QMUIWriteAssetCompletionBlock)completionBlock;
- (void)saveVideoWithVideoPathURL:(NSURL *)videoPathURL albumAssetsGroup:(QMUIAssetsGroup *)albumAssetsGroup completionBlock:(QMUIWriteAssetCompletionBlock)completionBlock;
/// 获取一个 PHCachingImageManager 的实例
- (PHCachingImageManager *)phCachingImageManager;
@end
@interface PHPhotoLibrary (QMUI)
/**
* contentType PHFetchOptions
*
* @param contentType
*
* @return PHFetchOptions
*/
+ (PHFetchOptions *)createFetchOptionsWithAlbumContentType:(QMUIAlbumContentType)contentType;
/**
*
*
* @param contentType
* @param showEmptyAlbum contentType
* @param showSmartAlbum
*
* @return
*/
+ (NSArray<PHAssetCollection *> *)fetchAllAlbumsWithAlbumContentType:(QMUIAlbumContentType)contentType showEmptyAlbum:(BOOL)showEmptyAlbum showSmartAlbum:(BOOL)showSmartAlbum;
/// 获取一个 PHAssetCollection 中创建日期最新的资源
+ (PHAsset *)fetchLatestAssetWithAssetCollection:(PHAssetCollection *)assetCollection;
/**
*
*
* @warning
* QMUIAssetsManager
* @warning
*/
- (void)addImageToAlbum:(CGImageRef)imageRef albumAssetCollection:(PHAssetCollection *)albumAssetCollection orientation:(UIImageOrientation)orientation completionHandler:(void(^)(BOOL success, NSDate *creationDate, NSError *error))completionHandler;
- (void)addImageToAlbum:(NSURL *)imagePathURL albumAssetCollection:(PHAssetCollection *)albumAssetCollection completionHandler:(void(^)(BOOL success, NSDate *creationDate, NSError *error))completionHandler;
- (void)addVideoToAlbum:(NSURL *)videoPathURL albumAssetCollection:(PHAssetCollection *)albumAssetCollection completionHandler:(void(^)(BOOL success, NSDate *creationDate, NSError *error))completionHandler;
@end