2016-08-03 97 views
0

当我拿起一张照片从图库我有这样的事情:如何从URL加载图像在Xamarin.iOS

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?有很多方法来获得路径/网址。

回答

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客户端....

Assets Library框架自iOS 9.0起弃用。相反,使用照片框架,而iOS 8.0和更高版本则提供更多功能和更好的性能来处理用户的照片库。

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

+0

这实在是难以阅读苹果文档,并将其转换为C#的,如果你开始在xamarin.iOS – raymondis

+0

发展@raymondis你是对的,它帮助了很多看' Swift'代码的例子,当你看到Apple文档时,你可以*通常*直接转换为'Obj-C'。 – SushiHangover

+0

噢,很棒的提示!非常感谢你!! – raymondis