我是raspbian os(pi3 b)中Mono C#编程的新手。我从github link处的C#mono中获取了指纹扫描仪应用程序的示例代码,现在我在pi3 b板下的Raspbian操作系统中运行相同的应用程序。
现在,在扫描用户手指图像之后,我想显示到我的winform PictureBox中。
一旦应用程序扫描了每个手指,它将使用以下回调方法将byte []发送到UI。
goog.require
我是raspbian os(pi3 b)中Mono C#编程的新手。我已经用C#编写了一个指纹扫描仪应用程序,并使用了mono,我正在pi3板下的Raspbian操作系统中运行相同的应用程序。
现在,在扫描用户手指图像之后,我想显示在我的PictureBox中。
一旦lib扫描了每个手指,它将使用以下回调方法将byte []发送到UI。
private void FingerPrintlib_OnEnrollImageResult(byte[] enrollImage, int count)
{
//lblinstruction.Invoke((MethodInvoker)delegate
//{
// lblinstruction.Visible = false;
//});
if (count == 0)
{
pictureBox4.Invoke((MethodInvoker)delegate
{
//pictureBox4.Image = byteArrayToImage(enrollImage);
pictureBox4.SizeMode = PictureBoxSizeMode.StretchImage;
});
}
else
{
pictureBox5.Invoke((MethodInvoker)delegate
{
//pictureBox5.Image = byteArrayToImage(enrollImage);
pictureBox5.SizeMode = PictureBoxSizeMode.StretchImage;
});
}
}
当我执行上面的代码时,出现了类似的异常
找到空引用或无效值[GDI +状态: InvalidParameter]
那么我该如何解决此问题并将图像文件显示到我的应用程序中?
谢谢
答案 0 :(得分:0)
下面的代码可以正常工作:
using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace ImageLoad
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
byte[] data = File.ReadAllBytes("test.jpg");
this.pictureBox1.Image = GetImage(data);
}
private static Image GetImage(byte[] data)
{
using (MemoryStream ms = new MemoryStream(data))
{
return (Image.FromStream(ms));
}
}
}
}
新的Windows窗体项目,在窗体中添加图片框,将test.jpg
文件复制到Debug
目录中,并使用上面的代码。没问题。图片已加载。