2 dear15214 dear15214 于 2016.05.03 11:26 提问

PHAsset真机上获取到PHImageFileURLKey,但是根据这个路径获取不到图片大小

NSURL *fileURL = [photoData objectForKey:@"PHImageFileURLKey"];
这句话获取到的图片URL:(图片路径如下)

Printing description of fileURL:
file:///var/mobile/Media/DCIM/100APPLE/IMG_0114.JPG

但是根据url没有获取到图片大小
data=[NSData dataWithContentsOfURL:fileURL];
data的值是nil ,有哪位大神知道是怎么回事吗?

有很小一部分图能获取的大小 ,多数图是获取不到大小的 都显示的是nil 搞不懂怎么回事

8个回答

oyljerry
oyljerry   Ds   Rxr 2016.05.03 11:28

你会查看返回的错误信息,会是没有权限等,这个路径你程序不能直接访问,你应该还是通过Photo Framework去获取图片的NSData,然后再显示

dear15214
dear15214 权限是获取到的,获取图片原图大小不就是根据图片URL来的吗?在模拟器上是可以得到data的,真机上就是不行
大约 2 年之前 回复
qq_35824846
qq_35824846   2017.03.10 13:48

我现在也遇到这个问题了, 请问怎么解决的

u012688089
u012688089   2017.04.25 16:40

我获取视频时 也出现了这个问题 根据路径不能获取到大小 解决了吗

dear15214
dear15214   2017.04.27 14:29

id photoData=[assets objectAtIndex:i];
[[PHImageManager defaultManager] requestImageDataForAsset:photoData options:nil resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
data = [NSData dataWithData:imageData];

}];
这个方法可以取到大小

CSUCFL
CSUCFL   2017.05.02 17:57

API用错了,你该用 dataWithContentsOfFile这个,注意看名字
带file前缀的URL,用带file的API
绝对路径的用 dataWithContentsOfURL

u012563404
u012563404 你这个方法并不可行
大约一年之前 回复
u012563404
u012563404   2017.05.20 17:19

楼主,你这个问题解决了没? 能不能讲一下解决方案?

u010971348
u010971348 回复dear风会停息: 这样子直接拿的话,内存会飙升,视频只有几十M甚至十几M,使用内存都会飙升到400多M,,,,,,,适当的做法应该是把图片或者视频拷贝到沙盒中,再用沙盒路径拿data,用完就删
大约一年之前 回复
u012563404
u012563404 回复dear风会停息: 这个image 是可以取到的,但是通过PHImageFileURLKey拿到的路径,通过这个路径却取不到这个图片,这是为何呢?
大约一年之前 回复
dear15214
dear15214 image你能取到吗?取到的话就用[[PHImageManager defaultManager] requestImageDataForAsset:photoData options:nil resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) { data = [NSData dataWithData:imageData]; }];这个方法取大小
大约一年之前 回复
qq_27799269
qq_27799269   2017.05.29 14:07

我想请问下 如何获取/var/mobile/Media/DCIM下的文件吗

zp511253886
zp511253886   2017.06.14 17:25

请问楼主解决了吗? 我也遇到了这个问题

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
PHAsset获得视频URL,遇到的一些问题
之前写过“PHAsset获得视频URL时,用requestAVAssetForVideo有时会得到AVComposition这个对象”这个博客有介绍怎么去处理来获得url。 现在又发现一个新的方法,通过 [[PHImageManager defaultManager] requestAVAssetForVideo:phasset options:options resultHandle
iOS开发 PHAsset获取照片名称
用PHAsset获取照片名称目前网上有三种方法。第一种: [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:size contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result
使用PHAsset获取图像或视频文件的大小
分为图片和视频2部分 1. 图片 [[PHImageManager defaultManager] requestImageDataForAsset:asset options:nil resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info)
iOS 获取图像的方式与坑点
请求图像(这里有巨坑)关于PHImageManager类,NSHipster 有篇总结文章不错。- requestImageForAsset:targetSize:contentMode:options:resultHandler:你不应该生成该类的实例,而应该使用该类的提供的单例对象。该方法提供指定的尺寸的图像,与ALAssetsLibrary库相比,没有了方便的缩略图提供。不过要吐槽的是,AL...
使用PHAsset获取相册中特定的图片
本人对PHotokit框架也不是很了解,就不做解释了。 具体代码如下:PHAsset *ass = _selectedAssets[i]; // 获取所有资源的集合,并按资源的创建时间排序 PHFetchOptions *options = [[PHFetchOptions alloc] init];
如何获取视频路径
前言有时候,需要使用系统文件管理器选择需要的音视频文件。 今天的文章小结下这类问题。目标1)如何调用系统文件管理器 2)如何判断选择的文件就是视频文件调用系统文件管理器-概括在android中查找文件,是使用Uri方式标记的,获得到的Uri基本是2种形式: content:// or file:// 接下来会提到2种方式的使用, content://标识的Uri 获取的cursor不会为空
通过assetURL获取到视频
iOS中assetURL样式:assets-library://asset/asset.mov?id=F2E6E143-4343-4B57-87F9-346936E0EDB3&ext=mov使用当前的URL过滤到我们想要的数据 PHFetchResult *result = [PHAsset fetchAssetsWithALAssetURLs:@[assetUrl] options:nil];
imagepick返回的asseturl获取图片数据
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { [picker dismissModalViewControllerAnimated:NO]; NSString *mediaType = [info
iOS拍照后使用该图片(获取照片的ALasset传到相册)
问题: 拍照后,点击选择照片在-(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 的代理方法中获取了相册的Alasset后,发现为空解决办法:-(void)imagePickerController:(UIImagePicke
PHAsset获取相册资源
[self getAllAssetInPhotoAblumWithAscending:YES];#pragma mark - 获取相册内所有照片资源 - (NSArray<PHAsset *> *)getAllAssetInPhotoAblumWithAscending:(BOOL)ascending { _pictureArr = [[NSMutableArray alloc]init];