MonoTouch:从ALAssetsLibrary.AssetForUrl中获取图像

时间:2012-09-11 01:09:03

标签: ios xamarin.ios alassetslibrary

在MonoTouch中:

我将相机中的图像放入PhotoAlbum:

ALAssetsLibrary library = new ALAssetsLibrary();
library.WriteImageToSavedPhotosAlbum(photo.CGImage, meta, (assetUrl, error) => {
    library.AssetForUrl(assetUrl, GotAsset, FailedGotAsset);
});

Photo就在那里,效果很好。

在委托GotAsset上我试图取出图像,但只有缩略图在那里。图像在哪里?

    void GotAsset(ALAsset asset)
    {
         //asset has only thumbnail info???
    }

这是资产的样子:

enter image description here

2 个答案:

答案 0 :(得分:4)

在运行时,您没有看到设备上的每个属性,因为默认情况下,(托管)链接器已启用(链接SDK )。这将删除您的应用程序未使用的任何代码(包括属性)(并节省大量的KB和部署时间)。

您可以尝试通过添加自己的资源(在模拟器中)在模拟器上调试此功能(默认为不链接)。另一种方法是暂时禁用设备构建中的链接器。

在任何一种情况下,您的ALAsset都应显示所有已记录的属性。

答案 1 :(得分:1)

基于@Poupou的帮助,这里是为了让它起作用而添加的代码:

    void GotAsset(ALAsset asset)
    {
        ALAssetRepresentation rep = asset.DefaultRepresentation;
        var iref = rep.GetImage();
        if(iref!=null)
            DoStuffWithUIImage(UIImage.FromImage(iref));
    }