有反正我可以使用從"PHImageFileURLKey"
返回的路徑進入照片庫並檢索圖像?PhotoKit iOS8 - 使用「PHImageFileURLKey」檢索圖像
返回的路徑格式如下:
"file:///var/mobile/Media/DCIM/102APPLE/IMG_2607.JPG"
我的計劃是這樣的路徑存儲在數據庫中,並用它來獲取圖像,當我需要把它找回來。
任何幫助表示讚賞。謝謝!
有反正我可以使用從"PHImageFileURLKey"
返回的路徑進入照片庫並檢索圖像?PhotoKit iOS8 - 使用「PHImageFileURLKey」檢索圖像
返回的路徑格式如下:
"file:///var/mobile/Media/DCIM/102APPLE/IMG_2607.JPG"
我的計劃是這樣的路徑存儲在數據庫中,並用它來獲取圖像,當我需要把它找回來。
任何幫助表示讚賞。謝謝!
我認爲你從URL中檢索Photo Kit資源的解決方案是錯誤的。
這裏是我會做什麼(假設你有機會獲得PHAsset):
商店localIdentifier:
PHAsset *asset = /*Your asset */
NSString *localIdentifier = asset.localIdentifier;
//Now save this local identifier, or an array of them
當它的時間來檢索他們,你只需做:
PHFetchResult *savedAssets = [PHAsset fetchAssetsWithLocalIdentifiers:savedLocalIdentifiers options:nil];
[savedAssets enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) {
//this gets called for every asset from its localIdentifier you saved
}];
如果您只能訪問「PHImageFileURLKey」,則忽略此答案。
這沒有記錄,所以我會強烈建議反對使用該URL的任何東西比原型應用程序。這就是說,這確實出現了工作:
dispatch_queue_t queue = dispatch_queue_create("photoLoadQueue", 0);
dispatch_async(queue, ^{
NSURL *privateUrl = [NSURL URLWithString:@"file:///var/mobile/Media/DCIM/102APPLE/IMG_2607.JPG";
NSData *imageData = [NSData dataWithContentsOfURL:privateUrl];
dispatch_async(dispatch_get_main_queue(), ^{
self.imageView.image = [UIImage imageWithData:imageData];
});
});
當然就需要更換用於啓動的URL以一個有效期爲你的手機串。
這樣做可能會帶來很多問題 - 這不僅僅是框架的用意。下面是一些我的頭頂部:
PHAsset
的變化。如果我是你,我會正確地從照片框架檢索圖像,使用PHImageManager requestImageForAsset: targetSize: contentMode: options: resultHandler:
,並將其存儲在應用程序的目錄中的文件在你用它做不管什麼一個合理的解決方案。這仍然不會改變您的資產,但這是一個很好的解決方案。
如果你想存儲資產本身,並且只在實際需要時請求圖像,可能值得調查transient asset collections,儘管我沒有使用它們,因此可能無法滿足你的需求。
感謝您的詳細回覆。在閱讀你所列出的潛在問題後,我決定不採用這種方法。相反,我使用PHObject上的「LocalIdentifier」屬性來唯一標識圖像並從庫中獲取圖像。我能夠使用fetchAssetsWithLocalIdentifiers:方法讓他們回來。 – pnavk 2014-11-24 15:32:46
謝謝,我沒有看到,也讓我改進我的應用程序!我喜歡這樣。 – 2014-11-25 12:38:25
您的代碼導致「Operation not permitted」錯誤。 – Mojo66 2016-11-24 21:53:33