iOS9.3beta3,
PHImageManager requestImageDataForAsset返回时,imageData指向一张照片,尽管PHAssert是在设备上捕获的视频资产。
文档他说
"requestImageDataForAsset(_:options:resultHandler:) ..。如果版本选项设置为PHImageRequestOptionsVersionCurrent,Photos将提供呈现的图像数据,包括对资产内容所做的任何编辑的结果。否则,Photos将为资产提供最初捕获的图像数据。“
那是Is 9.3中的一个bug吗?
埃米尔。
发布于 2016-05-23 09:45:04
对我来说简单的解决方案
+ (void)getAssetData:(NSString *)ident completeBlock:(void (^)(NSData *assetData))completeBlock {
PHFetchResult *fetchResult = [PHAsset fetchAssetsWithLocalIdentifiers:@[ident] options:nil];
if (fetchResult && [fetchResult count] == 0) {
if (completeBlock) {
completeBlock(nil);
}
return;
}
PHAsset *asset = fetchResult.firstObject;
if (asset.mediaType == PHAssetMediaTypeVideo) {
[[PHImageManager defaultManager] requestAVAssetForVideo:asset options:nil resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
if ([asset isKindOfClass:[AVURLAsset class]]) {
AVURLAsset* urlAsset = (AVURLAsset*)asset;
NSNumber *size;
[urlAsset.URL getResourceValue:&size forKey:NSURLFileSizeKey error:nil];
NSData *data = [NSData dataWithContentsOfURL:urlAsset.URL];
completeBlock(data);
} else {
completeBlock(nil);
}
}];
} else {
[[PHImageManager defaultManager] requestImageDataForAsset:fetchResult.firstObject options:nil resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
completeBlock(imageData);
}];
}
}
https://stackoverflow.com/questions/35494169
复制相似问题