2016-07-13 6 views
0

を取得するには、以下のAPIから離れてPHAssetオブジェクトからPhAssetは、ファイルサイズのiOS

- (PHImageRequestID)requestImageDataForAsset:(PHAsset *)asset options:(nullable PHImageRequestOptions *)options resultHandler:(void(^)(NSData *__nullable imageData, NSString *__nullable dataUTI, UIImageOrientation orientation, NSDictionary *__nullable info))resultHandler; 

をファイルサイズを取得する方法はあります我々はALAssetオブジェクト内のファイルサイズのdirectyを得ることができるが、私はPHAssetオブジェクトでそれを見つけるcouldntの。

ありがとうございます。

答えて

1

残念ながら、PHAssetにはこのような情報は含まれていません。また、画像がクラウド上にある場合、ALAssetのfileSizeは正しく動作しませんのでご注意ください。 options.sunchronous = NO;を設定し少しパフォーマンスを得るために

// 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]); 
}]; 

:あなたはクラウドとローカルストレージの両方から画像サイズをフェッチする安定した方法が必要な場合 は、だから、これを使用しています。
tryALAssetオブジェクトをPHAssetから作成し、そこからfileSizeを得ることができますが、ALAssetLibraryは廃止され、クラウドからイメージのファイルサイズが正しく取得されないことに注意してください。

+0

私はrequestImageDataForAssetについて知っていますが、かなり時間がかかります。このAPI以外の方法はありますか? – Ekra

+0

最新の回答をご覧ください –

関連する問題