如何在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的方法太多了。
由于这些图像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);