ImageSource return bytes 如何传给应用程序

How does ImageSource return bytes to the application

我想实现我自己的 ImageSource 的子类。 Xamarin Forms 有 FileImageSourceUriImageSourceImageSource 的其他几个子类,但其中 none 满足我的需求。

为了了解如何实现 ImageSource 子类,我在 github (https://github.com/xamarin/Xamarin.Forms/blob/5.0.0/Xamarin.Forms.Core/FileImageSource.cs)

上查看了 FileImageSource 的实现

我预计会发现子类会覆盖一个或多个 ImageSource 方法来实际读取图像文件并将文件中的字节提供给调用平台。但是 FileImageSource 的源代码中没有这样的东西!事实上,他们只使用 File 来覆盖 ImageSource.IsEmpty。怎么会这样?如果文件中包含图像,则需要读取文件才能显示该图像,不是吗?

我错过了什么?而如果我想自己实现ImageSource的子类,我的sublass return 图片数据怎么传给平台呢?

编辑 感谢所有建议以不同方式解决问题并询问为什么现有 ImageSource 子类不能满足我的需求的人。

即使有其他方法可以解决我眼前的问题,从教育的角度了解 Xamarin Forms 如何在不读取文件的情况下显示图像文件仍然很有趣。 FileImageSource 的源代码非常短,除了实现 IsEmpty 之外似乎没有使用该文件。在我知道它是如何工作之前,这会困扰我。

[使用转换器解决问题]

您可以创建 Converter(如果您正在使用绑定)而不是创建新的 ImageSource。

因此,如果您有字节数组之类的东西,并且希望将其显示为图像,则可以将字节数组转换为 StreamImageSource

[编辑:知道它是如何工作的]

如果您想知道它的内部工作原理以及它如何将文件转换为实际图像,您将不得不深入研究代码,并检查平台实现。 例如 here 你有 android 渲染器。您会发现 IImageSourceHandler.cs 和 FontImageSourceHandler 以及 FileImageSourceHandler 等等。