2017-07-05 1 views
1

Lors de l'extraction des images en utilisant le cadre photo, je reçois toutes les images de la galerie de l'objet PHAsset. Ma question est de savoir si les images de PHAsset sont globalement uniques ou sont spécifiques à l'appareil. Puis-je utiliser la même image PHAsset sur différents iPhones? Je ne veux pas convertir l'UIImage en NSData et le convertir de NSData en UIImage.IS l'image PHAsset globalement unique pour tous les iPhones?

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

Répondre

2

A PHAsset représentent un pointeur vers une image dans la photothèque de l'utilisateur. Les gens ont des images différentes sur leur téléphone, il n'est donc pas logique de passer ce pointeur à un autre téléphone. id de PHAsset est appelé explicted localIdentifier pour cette raison.

Si vous souhaitez transférer une image d'un appareil à un autre appareil, vous devez transférer comme NSData.