我是否可以使用从"PHImageFileURLKey"返回的路径进入照片库并检索图像?
返回的路径采用以下格式:
"file:///var/mobile/Media/DCIM/102APPLE/IMG_2607.JPG"我的计划是将此路径存储在数据库中,并在需要获取图像时使用它来获取图像。
任何帮助都是非常感谢的。谢谢!
发布于 2015-03-05 12:21:26
我认为您从URL检索Photo资产的解决方案是错误的。
下面是我要做的事情(假设您可以访问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”,那么忽略这个答案。
发布于 2014-11-23 08:56:38
这是没有文档的,所以我强烈建议不要使用这个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:从照片框架中正确地检索图像,并将其存储在应用程序目录中的一个文件中,无论你用它做什么,它都是一个合理的分辨率。这仍然不会给您带来资产变化,但是一个很好的解决方案。
如果您希望自己存储资产,并且只在实际需要时才请求映像,则可能值得研究临时资产收集,尽管我没有使用它们,这样可能无法满足您的需要。
https://stackoverflow.com/questions/27065705
复制相似问题