框架
TZImagePickerController
封裝
// .h
#import <Foundation/Foundation.h>
#import "TZImagePickerController.h" // 圖片選擇器
@interface KapPhotoManager : NSObject<TZImagePickerControllerDelegate>
@property (nonatomic,strong) NSIndexPath *indexPath;// 記錄插入的位置
@property (nonatomic,copy) void(^finshBlock)(NSArray *photos,NSArray *assets,NSIndexPath *indexPath);
- (TZImagePickerController *)CreatedImagePickerController;
- (void)setFinshBlock:(void (^)(NSArray *photos, NSArray *assets, NSIndexPath *indexPath))finshBlock;
+ (NSString *)filePathByAssets:(id)assert AndImage:(UIImage *)image;
@end
// .m
#import "KapPhotoManager.h"
#import "TZImageManager.h"
#import <AssetsLibrary/AssetsLibrary.h>
@implementation KapPhotoManager
- (TZImagePickerController *)CreatedImagePickerController{
TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:9 columnNumber:4 delegate:self pushPhotoPickerVc:YES];
imagePickerVc.allowTakePicture = YES;// 在內(nèi)部顯示拍照按鈕
imagePickerVc.sortAscendingByModificationDate = YES;// 照片排列按修改時間升序
imagePickerVc.allowPickingVideo = NO;
imagePickerVc.allowPickingImage = YES;
imagePickerVc.allowPickingGif = NO;
imagePickerVc.allowPickingOriginalPhoto = YES;//允許選擇原圖
return imagePickerVc;
}
#pragma mark - TZImagePickerControllerDelegate
- (void)tz_imagePickerControllerDidCancel:(TZImagePickerController *)picker {
// NSLog(@"cancel");
}
- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto {
//獲得原圖
// [[TZImageManager manager] getOriginalPhotoWithAsset:<#(id)#> completion:<#^(UIImage *photo, NSDictionary *info)completion#>];
if (self.finshBlock) {
self.finshBlock(photos,assets,self.indexPath);
}
}
// 如果用戶選擇了一個視頻藻治,下面的handle會被執(zhí)行
// 如果系統(tǒng)版本大于iOS8留荔,asset是PHAsset類的對象,否則是ALAsset類的對象
- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingVideo:(UIImage *)coverImage sourceAssets:(id)asset{
}
// 如果用戶選擇了一個gif圖片,下面的handle會被執(zhí)行
- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingGifImage:(UIImage *)animatedImage sourceAssets:(id)asset {
}
// 決定相冊顯示與否
- (BOOL)isAlbumCanSelect:(NSString *)albumName result:(id)result {
return YES;
}
// 決定asset顯示與否
- (BOOL)isAssetCanSelect:(id)asset {
return YES;
}
#pragma mark 圖片存儲相關(guān)
+ (NSString *)filePathByAssets:(id)assert AndImage:(UIImage *)image{
NSString *imageName = [self imageNameSha512ByAssert:assert];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:imageName];
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
[imageData writeToFile:imagePath atomically:YES];
return imagePath;
}
+ (NSString *)imageNameSha512ByAssert:(id)asset{
NSString *imageName;
if ([asset isKindOfClass:[PHAsset class]]) {
PHAsset *phAsset = (PHAsset *)asset;
imageName = phAsset.localIdentifier;
} else if ([asset isKindOfClass:[ALAsset class]]) {
ALAsset *alAsset = (ALAsset *)asset;
imageName = alAsset.defaultRepresentation.UTI;
}
if ([NSString isBlankString:imageName]) {
imageName = [[NSUUID UUID] UUIDString];
}
NSString *fileName = [NSString stringWithFormat:@"%@.jpg",[NSString sha512:imageName]];// 將圖片名字share512加密作為文件名
return fileName;
}
@end