2016-05-24 16 views
0

次のコードを使用して、アップロードするイメージのファイル名にアクセスします。ファイルパスとサイズの両方にファイル名が必要です。ALAssertLibraryを置き換えてファイル名を取得する

ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *imageAsset) 
    { 
     ALAssetRepresentation *imageRep = [imageAsset defaultRepresentation]; 
     NSLog(@"[imageRep filename] : %@", [imageRep filename]); 
     [_imageNameArray addObject:[imageRep filename]]; 
    }; 

    [_uploadTbleView reloadData]; 
    ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init]; 
    [assetslibrary assetForURL:refURL resultBlock:resultblock failureBlock:nil]; 

イムフェーシングがある問題、

  1. XcodeはALAssetsLibraryAssetForURLResultBlockは廃止され、警告メッセージをスローします。ファイル名を取得するために上記のコードをどのように置き換えることができますか?
  2. 私はPHAssetを使ってみましたが、ファイルを選択するたびに、すべてのイメージファイルに対して同じファイル名がasset.jpgとなっています。

答えて

2

あなたはこれを試すことができます。

PHAsset *asset = nil; 
PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init]; 
fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]]; 
PHFetchResult *fetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions]; 
if (fetchResult != nil && fetchResult.count > 0) { 
    // get last photo from Photos 
    asset = [fetchResult lastObject]; 
} 

if (asset) { 
    // get photo info from this asset 
    PHImageRequestOptions * imageRequestOptions = [[PHImageRequestOptions alloc] init]; 
    imageRequestOptions.synchronous = YES; 
    [[PHImageManager defaultManager] 
      requestImageDataForAsset:asset 
          options:imageRequestOptions 
         resultHandler:^(NSData *imageData, NSString *dataUTI, 
             UIImageOrientation orientation, 
             NSDictionary *info) 
    { 
      NSLog(@"info = %@", info); 
      if ([info objectForKey:@"PHImageFileURLKey"]) { 
       // path looks like this - 
       // file:///var/mobile/Media/DCIM/###APPLE/IMG_####.JPG 
       NSURL *path = [info objectForKey:@"PHImageFileURLKey"]; 
    }            
    }]; 
} 
+0

asset = [fetchResult lastObject];最後に取得した画像ファイル名を印刷します。選択した画像オブジェクトを最後にはしたくないです。 – Roger

+0

[fetchResult enumerateObjectsUsingBlock:^(PHAsset * asset、NSUInteger idx、BOOL * stop){ NSLog(@ "asset%@"、asset); }]; –

+0

ドキュメントを読むと、PHAsset http://nshipster.com/phimagemanager/ –

関連する問題