MonoTouch:从 ALAssetsLibrary.AssetForUrl 中获取图像

Posted

技术标签:

【中文标题】MonoTouch:从 ALAssetsLibrary.AssetForUrl 中获取图像【英文标题】:MonoTouch: Getting an Image out of ALAssetsLibrary.AssetForUrl 【发布时间】:2012-09-11 01:09:02 【问题描述】:

在 MonoTouch 中:

我正在将相机中的图像放入相册:

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???
    

这是资产的样子:

【问题讨论】:

【参考方案1】:

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

您可以尝试通过添加您自己的资产(在模拟器中)在模拟器上进行调试(默认为不链接)。另一种方法是暂时禁用设备版本上的链接器。

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

【讨论】:

关于如何在 File.ReadAllBytes() 中准备图像文件的任何想法?我不能为此使用这个资产库网址。在这种特定情况下,我想将文件上传到服务器,因此我需要访问真实的文件路径。【参考方案2】:

根据@Poupou 的帮助,这是我添加的代码:

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

【讨论】:

以上是关于MonoTouch:从 ALAssetsLibrary.AssetForUrl 中获取图像的主要内容,如果未能解决你的问题,请参考以下文章

从 MonoTouch 访问 iCloud NSUbiquitousKeyValueStoreDidChangeExternallyNotification 详细信息

MonoTouch:从命令行创建 iOS AppStore-Version

从 Nib 加载视图不会初始化插座 - Monotouch

Monotouch:尝试从使用 AVAudioPlayer 动态生成的文件中播放音频

尝试从 monotouch 打开故事板给我一个错误

MonoTouch:如何从 TabBarController 的多个视图中选择初始视图