//直接获取相机胶卷中的所有图片
- (void)getImagesFromCameraRoll
{
PHFetchOptions *options = [[PHFetchOptions alloc] init];
options.fetchLimit = 1;
//直接通过PHAsset获得相机胶卷中的所有图片
PHFetchResult<PHAsset *> *assets = [PHAsset fetchAssetsWithOptions:options];
//通过唯一标识查找指定图片
// NSString *assetid = [[NSUserDefaults standardUserDefaults]stringForKey:@"assetid"];
// PHFetchResult<PHAsset *> *assets = [PHAsset fetchAssetsWithLocalIdentifiers:@[assetid] options:options];
//配置获取请求参数
PHImageRequestOptions *rop = [[PHImageRequestOptions alloc] init];
//同步获得图片, 只会返回1张图片
rop.synchronous = NO;
rop.resizeMode = PHImageRequestOptionsResizeModeFast;//不强制尺寸与目标相同
__block int count = 0;
for (PHAsset *asset in assets) {
NSLog(@"%zd", asset.localIdentifier);
[[NSUserDefaults standardUserDefaults]setObject:asset.localIdentifier forKey:@"assetid"];
[[PHImageManager defaultManager] requestImageForAsset:asset targetSize:CGSizeZero contentMode:PHImageContentModeDefault options:rop resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
NSLog(@"%@ - %zd", result, asset.localIdentifier);
if (count++ == 0) {
NSData* data = UIImageJPEGRepresentation(result,1);
NSString *documentsPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *filePath = [[NSString alloc]initWithFormat:@"%@%@",documentsPath, @"/thumbnail.png"];
[data writeToFile:filePath atomically:YES];
data = NULL;
UnitySendMessage("GlobalMgr","photoMessage",[filePath UTF8String]);
[self quitPhoto];
}
}];
}
}
方式二:
//通过相册间接获取所有图片
- (void)getThumbnailImages{
// 获得相机胶卷(所有照片)
PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].lastObject;
[self enumerateAssetsInAssetCollection:cameraRoll original:NO];
}
/**
* 遍历相簿中的所有图片
*
* @param assetCollection 相簿
* @param original 是否要原图
*/
- (void)enumerateAssetsInAssetCollection:(PHAssetCollection *)assetCollection original:(BOOL)original{
NSLog(@"相簿名:%@",assetCollection.localizedTitle);
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
// 同步获得图片, 只会返回1张图片
options.synchronous = YES;
options.resizeMode = PHImageRequestOptionsResizeModeExact;
// 获得某个相簿中的所有PHAsset对象
PHFetchResult<PHAsset *> *assets = [PHAsset fetchAssetsInAssetCollection:assetCollection options:nil];
for (int i=0; i<assets.count; i++) {
// 是否要原图
CGSize size = original ? CGSizeMake(assets[i].pixelWidth, assets[i].pixelHeight) : CGSizeZero;
// 从asset中获得图片
[[PHImageManager defaultManager] requestImageForAsset:assets[i] targetSize:size contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
NSLog(@"%d---localIdentifier:%@", i,assets[i].localIdentifier);
}];
}
}