[英]PhAsset get fileSize iOS
除了下面的 API 之外,還有什么方法可以從 PHAsset 對象中獲取文件大小
- (PHImageRequestID)requestImageDataForAsset:(PHAsset *)asset options:(nullable PHImageRequestOptions *)options resultHandler:(void(^)(NSData *__nullable imageData, NSString *__nullable dataUTI, UIImageOrientation orientation, NSDictionary *__nullable info))resultHandler;
我們可以在 ALAsset 對象中直接獲取 fileSize,但在 PHAsset 對象中找不到它。
提前致謝。
不幸的是,PHAsset 不包含此類信息。 另請注意,如果圖像在雲中,ALAsset 的文件fileSize
無法正常工作。 因此,如果您需要一種從雲和本地存儲中獲取圖像大小的穩定方法,請使用以下命令:
// 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;
.
但是,如果你需要更多的性能,您可以嘗試做一個ALAsset
從對象PHAsset
並獲得fileSize
從那里,但請記住,ALAssetLibrary已被棄用,並從雲中獲取圖像的文件大小將無法正常工作。
斯威夫特 5
從PHAsset
獲取file size
以 MB 為PHAsset
:
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.0*1024.0)
return imageSizeMB
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.