ここでは、AssetsLibrary を使用して携帯電話内のすべての写真を取得します。これ以上はナンセンスです。
まず、関連するライブラリをインポートする必要があります
#import <AssetsLibrary/AssetsLibrary.h>
コード:
写真= [[ NSMutableArray alloc ] init ];
ALAssetsLibrary *assetLibrary = [[ ALAssetsLibrary alloc ] init ];
ディスパッチキュー_tディスパッチキュー =ディスパッチ_get_global_queue ( DISPATCH_QUEUE_PRIORITY_DEFAULT , 0 );
dispatch_async (dispatchQueue, ^( void ){
//すべてのアルバムをループします
[assetLibrary enumerateGroupsWithTypes : ALAssetsGroupAll usingBlock :^( ALAssetsGroup *group, BOOL *stop){
[グループenumerateAssetsUsingBlock :^( ALAsset *result, NSUIntegerインデックス, BOOL *stop){
NSString *assetType = [プロパティの結果値: ALAssetPropertyType ];
NSDictionary *url = [プロパティの結果値: ALAssetPropertyURLs ];
if ([assetType isEqualToString : ALAssetTypePhoto ])
{
[写真追加オブジェクト:url];
NSLog ( @"url == %@" , url);
}
}];
dispatch_async ( dispatch_get_main_queue (), ^{
if (写真!= nil )
{
//ここに電話することに害があるかどうかはわかりません
}
});
}
失敗ブロック:^( NSError *エラー)
{
NSLog ( @"失敗" );
}];
});
このようにして、すべての写真の URL が写真配列に配置されます。
UIImageView *imgView = [[ UIImageView alloc ] initWithFrame : CGRectMake ( 5 , 5 , 20 , 20 )];
ALAssetsLibrary *lib = [[ ALAssetsLibrary alloc ] init ] ;
[ libassetForURL :[[ photo objectAtIndex :0 ] valueForKey : @"public.jpeg" ] resultBlock :^( ALAsset *asset)
{
//ここで写真の関連情報を取得できます
ALAssetRepresentation *assetRep = [asset defaultRepresentation ];
//サムネイルを取得する
CGImageRef imgRef = アセット。サムネイル;
imgView. image = [ UIImage imageWithCGImage :imgRef
スケール:assetRep. 規模
方向:( UIImageOrientation )assetRep。方向];
}
失敗ブロック:^( NSError *エラー)
{
NSLog ( @"失敗しました!!" );
}];