C# 如何从Xamarin.iOS中的URL加载图像
当我从图库中选择一张图片时,我会看到如下内容:C# 如何从Xamarin.iOS中的URL加载图像,c#,ios,xamarin,xamarin.ios,C#,Ios,Xamarin,Xamarin.ios,当我从图库中选择一张图片时,我会看到如下内容: NSUrl referenceURL = e.Info[new NSString("UIImagePickerControllerReferenceURL")] as NSUrl; //imageURL = referenceURL.AbsoluteString; imageURL = referenceURL.AbsoluteUrl.ToString(); string path = referenceURL.Path; NSUrl url
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);
但是数据
仍然为空
从URL加载图像的正确方法是什么
注意:url1和url2只是示例。
path
类似于=“/imagename.jpg”
也许我检索URL的方式不对?获取路径/url的方法有很多。因为这些图像url是基于“资产库”的,所以您需要通过
库访问它们:
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及更高版本中提供了更多功能和更好的性能,可用于处理用户的照片库
Ref:因为这些图像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及更高版本中提供了更多功能和更好的性能,可用于处理用户的照片库
参考:您可以使用nuget软件包进行图像加载:
ImageService.Instance.LoadUrl("url").Into(YourUIImageView);
您可以使用nuget包进行图像加载:
ImageService.Instance.LoadUrl("url").Into(YourUIImageView);
如果您开始使用xamarin进行开发,那么阅读apple文档并将其转换为c#是非常困难的。iOS@raymondis你是对的,在查看苹果文档时,查看Swift
代码示例会有很大帮助,因为你通常可以对Obj-C
文档进行直接转换。哦,是的,很好的提示!非常感谢你!!如果您开始使用xamarin进行开发,那么阅读apple文档并将其转换为c#是非常困难的。iOS@raymondis你是对的,在查看苹果文档时,查看Swift
代码示例会有很大帮助,因为你通常可以对Obj-C
文档进行直接转换。哦,是的,很好的提示!非常感谢你!!