【问题标题】:.Net Maui - Create ImageSource from pixel data.Net Maui - 从像素数据创建 ImageSource
【发布时间】:2022-12-11 19:56:23
【问题描述】:

我有一个二维数组,它保存图像每个像素的数据。我想要做的是在 .Net Maui (XAML) 中可视化此数据。

我的方法是 <Image/>,我将 ImageSource 属性绑定到我的数据并编写自定义 IValueConverter。但这就是我挣扎的地方。我找不到编写适用于所有平台的自定义图像源的方法。

另一个想法是使用 <Canvas/> 并手动绘制数据。但这有一些怪癖。在较小的图像比例 (10x10) 上,结果变得非常模糊,我找不到任何方法来禁用抗锯齿。为了防止这种情况,我必须为每个像素绘制更大的矩形。但这会增加一些不必要的复杂性,我必须计算实际的宽度和高度并使用它来计算矩形大小。

那么在 MAUI 应用程序中显示像素数据的最简单和最好的方法是什么? 为了简单起见,我们可以说我们有一个byte[,](灰度)或一个Color[,]数组作为数据(无论解决方案更简单)。

【问题讨论】:

  • 我最近不得不处理类似的事情。我的方法也是使用 IValueConverter 来提供从字节数组创建的 ImageSource。不过,我找不到有效的实现。我尝试使用 Stream,但没有用。
  • SkiaSharp 可以让您更好地控制显示逐像素构建的图像。我没有在毛伊岛使用过,但我认为它类似于SkiaSharp Graphics in Xamarin Forms
  • 是的,SkiaSharp 适用于 MAUI,其工作方式与适用于 Xamarin.Forms 的方式相同。

标签: c# xaml drawing .net-maui


【解决方案1】:

希望这能有所帮助。

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)

    {
        if (value == null)
            return null;

        var byteArray = getImageByteArray(value as string);

        return ImageSource.FromStream(() => new MemoryStream(byteArray));
    }


    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2022-07-06
    • 2022-12-17
    • 2022-10-18
    • 1970-01-01
    相关资源
    最近更新 更多