【问题标题】:How to Load an Image from URL in Xamarin.iOS如何在 Xamarin.iOS 中从 URL 加载图像
【发布时间】:2016-08-03 09:05:21
【问题描述】:

当我从图库中挑选一张图片时,我有这样的东西:

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的方法有很多。

【问题讨论】:

    标签: c# ios xamarin xamarin.ios


    【解决方案1】:

    由于这些图片网址是基于“assets-library”的,因此您需要通过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 及更高版本中为使用用户的照片库提供了更多功能和更好的性能。

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

    【讨论】:

    • 如果你开始在 xamarin.iOS 中开发,阅读苹果文档并将其转换为 c# 真的很困难
    • @raymondis 你是对的,在查看 Apple 文档时查看 Swift 代码示例很有帮助,因为您可以通常进行直接转换而不是Obj-C 个。
    • 哦,是的,很好的提示!非常感谢!!
    【解决方案2】:

    你可以使用nuget包FFImageLoading:

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

    【讨论】:

      猜你喜欢
      • 2016-05-25
      • 1970-01-01
      • 2017-01-10
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 2018-12-29
      • 1970-01-01
      相关资源
      最近更新 更多