К сожалению, PHASset не содержит такой информации. Также обратите внимание, что файл fileSize
от ALAset не работает должным образом, если изображение находится в облаке. Так что, если вам нужен стабильный способ извлечения размера изображения как из облака и локального хранилища просто используйте:
// 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;
.
Но если вам нужно больше производительности, вы можете try сделать ALAsset
объект от PHAsset
и получить fileSize
оттуда, но имейте в виду, что ALAssetLibrary устарела и получение размера файла изображения из облака не будет работать должным образом.
Я знаю о requestImageDataForAsset, но это занимает много времени. Есть ли какой-либо иной способ, кроме этого API – Ekra
Пожалуйста, взгляните на обновленный ответ –