mobile - 为什么在 Xamarin Media 插件中使用 ImageSource.FromStream 而不是 FromFile?

标签 mobile xamarin camera

我正在使用 James Montemagno 的 Xamarin 媒体插件 ( https://github.com/jamesmontemagno/MediaPlugin ),他的使用示例显示了从捕获的照片中以这种方式更新的图像:

        targetImage.Source = ImageSource.FromStream(() =>
        {
            var stream = file.GetStream();
            file.Dispose();
            return stream;
        });

这似乎同样有效:

        targetImage.Source = ImageSource.FromFile(file.Path);

不过,我觉得 James 的例子一定是在展示一种更好的方式,但我不明白为什么——也许是某个平台或另一个平台上的一些微妙之处。谁能告诉我为什么 Xamarin ImageSource 应该以一种方式而不是另一种方式设置?

最佳答案

选择 FromFile() 的原因或 FromStream()取决于手头的用例。此外,使用的方法取决于记录的数据类型 here .

FromFile()需要 stringpath , FromStream()需要 Func<System.IO.Stream> .

在您提到的具体情况下,the sample hereof , 返回 Stream 是明智的因为正在拍摄尚未存储的照片。

首先, TakePhotoAsync() 被称为返回 MediaFile .此类然后返回 Stream打电话时 GetStream() .之后,SourceImage设置为结果。

本质上,您决定采用的方法取决于手头的用例和数据类型。

关于mobile - 为什么在 Xamarin Media 插件中使用 ImageSource.FromStream 而不是 FromFile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41663571/

相关文章:

css - Mobile Safari,CSS 动画在导航时卡住

android - 尝试在 xamarin.android 中自定义字体时出错

c# - Xamarin SQLite.Net PCL——什么是保持域模型没有 sqlite 属性的好选择?

C# 绑定(bind)库方法不接受实现参数

ios - 在 iphone 5 中调整相机表的大小

javascript - 使用 Foundation 的单页应用程序视口(viewport)移动

android - 找不到 Bundle URL - React Native 入门

JavaScript 触摸事件点击底层

opencv - 如何使用USB从多个DSLR相机捕获图像?

Android 相机过滤器在 tegra gpus 上速度慢,但在其他人上速度快