2016-08-03 81 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