2017-07-05 1 views
1

Photoフレームワークを使用してイメージを取得する場合、ギャラリーのすべてのイメージをPHAssetオブジェクトから取得しています。私の質問は、PHAssetからの画像が世界的に一意であるか、またはそれらが装置固有であるかどうかです。別のiPhoneで同じPHAssetイメージを使用することはできますか?私はUIImageをNSDataに変換し、NSDataからUIImageに再度変換したくありません。IS PHAssetの画像はすべてのiPhoneでグローバルにユニークですか?

PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil]; 

//set up fetch options, mediaType is image. 
PHFetchOptions *options = [[PHFetchOptions alloc] init]; 
options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]]; 
options.predicate = [NSPredicate predicateWithFormat:@"mediaType = %d",PHAssetMediaTypeImage]; 

for (NSInteger i =0; i < smartAlbums.count; i++) { 
    PHAssetCollection *assetCollection = smartAlbums[i]; 
    PHFetchResult *assetsFetchResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:options]; 

    NSLog(@"sub album title is %@, count is %ld", assetCollection.localizedTitle, (unsigned long)assetsFetchResult.count); 
    if (assetsFetchResult.count > 0 && ![assetCollection.localizedTitle isEqualToString: @"Recently Deleted"]) {    

     for (PHAsset *asset in assetsFetchResult) { 
      PHImageRequestOptions *option = [PHImageRequestOptions new]; 
      option.synchronous = YES; 

      [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:CGSizeMake(self.view.frame.size.width, self.view.frame.size.height-100) contentMode:PHImageContentModeAspectFit options:option resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) { 
       [mutArrAsset addObject:asset]; 

       [self.imagesURLArray addObject:result]; 
      }]; 

      NSLog(@"asset are %@", asset); 
     }}} 

答えて

2

PHAssetは、ユーザーのフォトライブラリ内のイメージへのポインタを表します。人々は電話でさまざまなイメージを持っているので、そのポインタを別の電話に渡すのは意味がありません。このため、PHAssetのIDがlocalIdentifierと表示されています。

イメージをあるデバイスから別のデバイスに転送する場合は、NSDataとして転送する必要があります。

関連する問題