日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

AssetsLibrary使用介绍

發布時間:2024/7/23 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AssetsLibrary使用介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、概述??? AssetsLibrary框架:從iOS4.0開始提供,可以通過它獲取設備里的圖片和視頻等資料,以API的方式提供,而且界面式的,比UIImagePickerViewController靈活很多。既可以讀又可以寫。
二、讀取資料庫中的全部資料
1.大概步驟,首先通過ALAssetsLibrary獲取group,然后再獲取每個group中的每個ALAsset,通過ALAsset獲取圖片或者視頻鏈接。
2.獲取全部資料(ALAsset)以及鏈接:
? NSMutableArray *assetGroups = [[NSMutableArray alloc] init];? void (^assetGroupEnumerator) (struct ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop{? ? if(group != nil) {? ? ? ?[assetGroups addObject:group];? ? }? };?? ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];? NSUInteger groupTypes = ALAssetsGroupAll;?? [library enumerateGroupsWithTypes:groupTypes usingBlock:assetGroupEnumerator failureBlock:nil];? [library release]; ? NSMutableArray *assets = [[NSMutableArray alloc] init];? NSMutableArray *assetURLArray = [[NSMutableArray alloc] init];? void (^assetEnumerator) (struct ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {? ? if(result != nil) {? ? ? ?if(![assetURLArray containsObject:[result valueForProperty:ALAssetPropertyURLs]]) {? ? ? ? ?if(![[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypeVideo]) {? ? ? ? ? ?[assetURLArray addObject:[result valueForProperty:ALAssetPropertyURLs]];? ? ? ? ? ?[assets addObject:result];? ? ? ? ?}? ? ? ?}? ? }? };?? for (ALAssetsGroup *group in assetGroups) {? ? ?[group enumerateAssetsUsingBlock:assetEnumerator];? }??3.通過ALAsset鏈接獲取圖片或者視頻內容? ??? ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *returnAsset){ ??? ? ?//獲取資料的縮略圖,圖片視頻通用? ? ?UIImage *image = [UIImage imageWithCGImage:returnAsset.defaultRepresentation.fullResolutionImage];? ? ?? ? ?//針對圖片或者視頻做自定義處理? ? ?NSString *type = [returnAsset valueForProperty:ALAssetPropertyType];? ? ?if([type isEqualToString:ALAssetTypePhoto]){? ? ? ? ? ? ? ?}else if([type isEqualToString:ALAssetTypeVideo]){? ? ? //獲取視頻時長? ? ? ? NSNumber *duration = [returnAsset valueForProperty:ALAssetPropertyDuration]? ? ?} ?? };? ??? NSString *assetURL = [assetURLArray objectAtIndex:0];? ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];? [library assetForURL:[NSURL URLWithString:assetURL] resultBlock:resultblock failureBlock:nil];? [library release];??4.有時候有些視頻資料沒有寫入資料庫,但是我們仍然需要獲取視頻的時長。這時候我們就不能用第3條中提到的API來獲取視頻長度,我們可以采用AVFoundation框架中的一個類:AVURLAsset。? 代碼如下:? AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL options:nil];? CMTime ctTime = asset.duration;? [asset release];? NSInteger totalSeconds = ctTime.value / ctTime.timescale;
三、將本地圖片或者視頻寫入資料庫
1.步驟:調用ALAssetsLibrary將視頻或者圖片寫入資料庫,寫入成功之后,返回一個URL鏈接。
2.代碼:? ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];? if([cacheFilePath rangeOfString:@"jpg" options:NSCaseInsensitiveSearch].length > 0 ||? ? ?[cacheFilePath rangeOfString:@"png" options:NSCaseInsensitiveSearch].length > 0)? {? ? ?UIImage *image = [UIImage imageWithContentsOfFile:cacheFilePath];? ? ?[library writeImageToSavedPhotosAlbum:image.CGImage metadata:nil completionBlock:^(NSURL *assetURL, NSError *error){? ? ? ? NSString *assetUrlString = assetURL.absoluteString;? ? ? ? //根據需求做相應動作,比如保存這個鏈接? ? ?}];? }else{? ? ?NSURL *cacheURL = [NSURL URLWithString:cacheFilePath];? ? ?[library writeVideoAtPathToSavedPhotosAlbum:cacheURL completionBlock:^(NSURL *assetURL, NSError *error){? ? ? ? NSString *assetUrlString = assetURL.absoluteString;? ? ? ? //根據需求做相應動作,比如保存這個鏈接? ? ?}];? }? [library release];

總結

以上是生活随笔為你收集整理的AssetsLibrary使用介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。