无法使用设备图像 URL 在设备中加载图像?

Posted

技术标签:

【中文标题】无法使用设备图像 URL 在设备中加载图像?【英文标题】:Unable to load images in device using device image URL? 【发布时间】:2016-03-15 12:53:34 【问题描述】:

我有从照片库中选择的图像列表。之后,我通过这种方式检索所有图像 URL。

  PHImageManager *manager = [PHImageManager defaultManager];
 [manager requestImageForAsset:asset
                           targetSize:PHImageManagerMaximumSize
                          contentMode:PHImageContentModeDefault
                              options:self.requestOptions
                        resultHandler:^void(UIImage *image, NSDictionary *info) 

                            NSLog(@"%@",[info valueForKey:@"PHImageFileURLKey"]);
                            NSURL *imageURL = (NSURL *)[info valueForKey:@"PHImageFileURLKey"];
                            NSData *imgData = [NSData dataWithContentsOfURL:imageURL];
                            UIImage *img = [UIImage imageWithData:imgData];                                  
                        ];

现在的问题是它完美地在模拟器中加载图像但是当我在设备中运行时它无法加载图像。我得到了 null NSData。 请帮我解决这个问题。

【问题讨论】:

专辑图片是否包含 NSURL 或 NSString? 它包含 NSURL。 您可以在您创建的位置添加代码并将 URL 添加到集合中吗? 检查我添加的代码,我添加了资产的获取 URL。 您确定您的 Albumimages 集合已正确实例化等吗?从集合中检索 imageURL 时尝试打印出它 【参考方案1】:

你可以试试

NSData *myData = [NSData dataWithContentsOfFile:imageURL];  

相对于

NSData *myData = [NSData dataWithContentsOfURL:imageURL];  

【讨论】:

我没有得到这个问题,因为它在模拟器中运行良好,但是当我在设备中运行时,我得到了空图像数据。【参考方案2】:

我认为下面这行造成了问题。

NSURL *imageURL = [Albumimages objectAtIndex:i];

首先在此处检查您是否获得了您正在寻找的确切 URL,方法是复制它并在 mac 浏览器上运行它。如果没有,那么您需要通过以下方式创建NSURL

NSString* stringURL = [NSString stringWithFormat:@"http://www.google.com"];
NSString* webStringURL = [stringURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL* url = [NSURL URLWithString:webStringURL];

希望这会有所帮助。

【讨论】:

是的,我得到了正确的 URL。并在浏览器上查看。但现在的问题是它在模拟器中正常工作,但如果我在设备中运行它,我得到空数据。

以上是关于无法使用设备图像 URL 在设备中加载图像?的主要内容,如果未能解决你的问题,请参考以下文章

滑行,线圈不在模拟器中加载图像

反应本机:名称中带有空格的图像不会在 IOS 中加载(设备,不是 https 问题)

图像无法在带有 DOM 的 IE 中加载:控制台中出现 7009 错误(无法解码)

在 collectionView 中加载图像

无法在 Vue 中加载图像

无法在 tvOS 应用程序中加载 LCR 图像