我正在使用 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()
需要 string
到 path
, FromStream()
需要 Func<System.IO.Stream>
.
在您提到的具体情况下,the sample hereof , 返回 Stream
是明智的因为正在拍摄尚未存储的照片。
首先, TakePhotoAsync()
被称为返回 MediaFile
.此类然后返回 Stream
打电话时 GetStream()
.之后,Source
的 Image
设置为结果。
本质上,您决定采用的方法取决于手头的用例和数据类型。
关于mobile - 为什么在 Xamarin Media 插件中使用 ImageSource.FromStream 而不是 FromFile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41663571/