PhAsset 获取文件大小 iOS
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;
。
但是,如果您需要更高的性能,您可以 从 PHAsset
创建一个 ALAsset
对象并从那里获取 fileSize
,但请记住,ALAssetLibrary 已被弃用,并且获取的文件大小为来自云的图像将无法正常工作。
Swift 5
从 PHAsset
获取 file size
MB:
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
}
}
}
除了以下 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;
。
但是,如果您需要更高的性能,您可以 PHAsset
创建一个 ALAsset
对象并从那里获取 fileSize
,但请记住,ALAssetLibrary 已被弃用,并且获取的文件大小为来自云的图像将无法正常工作。
Swift 5
从 PHAsset
获取 file size
MB:
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
}
}
}