首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PhAsset get fileSize iOS

PhAsset get fileSize iOS
EN

Stack Overflow用户
提问于 2016-07-13 10:14:01
回答 2查看 3.9K关注 0票数 1

除了下面的API之外,有没有办法从PHAsset对象获取文件大小?

代码语言:javascript
运行
复制
 - (PHImageRequestID)requestImageDataForAsset:(PHAsset *)asset options:(nullable PHImageRequestOptions *)options resultHandler:(void(^)(NSData *__nullable imageData, NSString *__nullable dataUTI, UIImageOrientation orientation, NSDictionary *__nullable info))resultHandler;

我们可以在fileSize对象中获得ALAsset直接,但我在PHAsset对象中找不到它。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-13 10:20:00

不幸的是,PHAsset不包含这样的信息。另外,如果图像在云中,请注意ALAsset的fileSize不能正常工作。因此,如果您需要从云和本地存储中获取图像大小的稳定方法,只需使用以下命令:

代码语言:javascript
运行
复制
// Fetch image data to retrieve file size and path
PHImageRequestOptions * options = [[PHImageRequestOptions alloc] init];
options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
options.resizeMode = PHImageRequestOptionsResizeModeExact;

options.synchronous = YES; //Set this to NO if is needed

[[PHImageManager defaultManager] requestImageDataForAsset:photoAsset
                                                  options:options
                                            resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info)
 {
     //(CGFloat)imageData.length returns size in bytes
     NSLog(@"%@",[NSString stringWithFormat:@"%.2lf MB", ((CGFloat)imageData.length)/1024/1024]);
 }];

以获得一些性能集options.sunchronous = NO;

但是,如果您需要更高的性能,您可以通过tryPHAsset生成一个ALAsset对象,并从那里获取fileSize,但请记住,不推荐使用ALAssetLibrary,从云中获取图像的文件大小将无法正常工作。

票数 1
EN

Stack Overflow用户

发布于 2020-03-02 14:37:27

Swift 5

file size获取MB中的PHAsset

代码语言:javascript
运行
复制
extension PHAsset {
    var fileSize: Float {
        get {
            let resource = PHAssetResource.assetResources(for: self)
            let imageSizeByte = resource.first?.value(forKey: "fileSize") as? Float ?? 0
            let imageSizeMB = imageSizeByte / (1024 * 1024)
            return imageSizeMB
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38348771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档