如何在Xamarin.iOS中从URL加载图像

本文关键字:URL 加载 图像 中从 iOS Xamarin | 更新日期: 2023-09-27 17:59:50

当我从Gallery中挑选图片时,我会得到这样的东西:

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;

现在我正试图从URL加载该图像:

var url = new NSUrl(imageURL);
var data = NSData.FromUrl(url);
defectImage.Image = UIImage.LoadFromData(data);

但是data仍然为空。

从URL加载图像的正确方法是什么?

注意:url1和url2只是示例。path类似于="/imagename.jpg"

也许我检索URL的方式不对?获取路径/url的方法太多了。

如何在Xamarin.iOS中从URL加载图像

由于这些图像URL是基于"资产库"的,因此您需要通过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客户端,你真的应该开始使用照片框架。。。。

自iOS 9.0起,资产库框架已弃用。相反,请使用照片框架,该框架在iOS 8.0及更高版本中为用户的照片库提供了更多功能和更好的性能。

参考编号:https://developer.apple.com/library/ios/documentation/AssetsLibrary/Reference/ALAssetsLibrary_Class/index.html

您可以使用nuget包FFImageLoading:

ImageService.Instance.LoadUrl("url").Into(YourUIImageView);