如何将jpg字节数组转换为图像并在PictureBox中显示?

时间:2018-09-23 04:53:47

标签: c# winforms mono raspberry-pi3 raspbian

我是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]

那么我该如何解决此问题并将图像文件显示到我的应用程序中?

谢谢

1 个答案:

答案 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目录中,并使用上面的代码。没问题。图片已加载。

相关问题