当我从画廊中选择一张照片时,我有类似的东西:
NSUrl referenceURL = e.Info[new
NSString("UIImagePickerControllerReferenceURL")] as NSUrl;
//imageURL = referenceURL.AbsoluteString;
imageURL = referenceURL.AbsoluteUrl.ToString();
string path = referenceURL.Path;
NSUrl url1 = referenceURL.FilePathUrl;
NSUrl url2 = referenceURL.FileReferenceUrl;
现在我尝试从网址加载该图片:
var url = new NSUrl(imageURL);
var data = NSData.FromUrl(url);
defectImage.Image = UIImage.LoadFromData(data);
但data
仍为空。
从网址加载图片的正确方法是什么?
注意:url1和url2只是示例。
path
类似于" / imagename.jpg"
也许我正在以错误的方式检索网址?有很多方法可以获得路径/网址。
答案 0 :(得分:3)
由于这些图片网址是"资产 - 图书馆"基于,所以你需要通过ALAssetsLibrary
来访问它们:
var url = e.Info[UIImagePickerController.ReferenceUrl] as NSUrl;
var asset = new ALAssetsLibrary();
UIImage image;
asset.AssetForUrl(
url,
(ALAsset obj) =>
{
var assetRep = obj.DefaultRepresentation;
var cGImage = assetRep.GetFullScreenImage();
image = new UIImage(cGImage);
// Do something with "image" here... i.e.: assign it to a UIImageView
imageView.Image = image;
},
(NSError err) =>
{
Console.WriteLine(err);
}
);
注意:如果您不必支持iOS 7客户端,您真的应该开始使用 Photos框架 ....
从iOS 9.0开始,不推荐使用Assets Library框架。相反,请使用Photos框架,在iOS 8.0及更高版本中,它可以为用户的照片库提供更多功能和更好的性能。
答案 1 :(得分:0)
您可以使用nuget包FFImageLoading:
ImageService.Instance.LoadUrl("url").Into(YourUIImageView);