c# - 是否可以从 System.Drawing.Bitmap 创建 Avalonia.Media.Imaging.Bitmap?
问题描述
我正在 Avalonia 中编写一个应用程序并使用 OpenCvSharp 从相机中获取帧。这适用于 WPF - 我刚刚打电话给
Image.Source = Mat.ToBitmapSource();
但这在 Avalonia 中不起作用,因为存在不同类型的Image控件,以及不同类型的Source属性。
我尝试通过MemoryStream执行此操作,但随后Bitmap构造函数因ArgumentNullException崩溃(尽管流不为空)。
解决方案
当然,我一问你,我就找到了解决办法。将图像加载到内存中,然后将其回调。
我得到了相同类型的错误,但在我实现 using 语句后得到了修复。
//Place this in your class to create a class variable and create the System.Drawing.Bitmap Bitmap
private System.Drawing.Bitmap irBitmap = new System.Drawing.Bitmap(256, 192, PixelFormat.Format24bppRgb);
//Add this using statement to the function you're converting inside of
//to convert the System.Drawing.Bitmap to Avalonia compatible image for view/viewmodel
using (MemoryStream memory = new MemoryStream())
{
irBitmap.Save(memory, ImageFormat.Png);
memory.Position = 0;
//AvIrBitmap is our new Avalonia compatible image. You can pass this to your view
Avalonia.Media.Imaging.Bitmap AvIrBitmap = new Avalonia.Media.Imaging.Bitmap(memory);
}
如果您有任何问题或如何将其具体绑定到您的应用程序中,请告诉我。之前没有提供很多代码,所以我不知道为您的特定用例命名变量。
推荐阅读
- deno - 速度性能 Deno 与 Node
- python - 如何提高下面代码的速度以在列的每个单元格中进行更改
- excel - 计算 Excel 中具有相同票证的唯一名称的数量#
- flutter - flutter_bloc 中的 easy_localization 问题
- chisel - SyncReadMem 生成的 verilog 与 Rocketchip 发出的 verilog
- javascript - React 条件渲染 - 加载组件
- swiftui - SwiftUI NavigationLink 在删除然后插入新的 ForEach 元素后中断
- java - 如何通过使用弹簧功能扫描所有类来检测和处理自定义注释
- python - 将页眉和页脚添加到 txt 文档?并将其复制到另一个txt。格式
- php - 使用 Laravel 7 和 Maatwebsite 导出具有多个表的 Excel