指纹图像转换为字节c#



我一直在做一个指纹项目。下面的代码可以将指纹图像转换为字节数组,但是如果您取三个人的指纹,那么将提交的值是相同的,它不是唯一的。它应该是每个人唯一的,因为我们需要用它来验证每个人。如有任何帮助,将不胜感激。

public void btnSave_Click(object sender, EventArgs e)
{
    @fname = txtfname.Text;
    @lname = txtlname.Text;
    byte[] @img1 = Encoding.UTF8.GetBytes(Convert.ToString(pictureBox1.Image));    
    con = new SqlConnection(@"Data Source=DESKTOP-400N4CL;Initial Catalog=test;Integrated Security=True");
    con.Open();
    cmd = new SqlCommand("INSERT INTO dbo.fingerp " + " (fname,lname,finprint) " + " VALUES(@fname,@lname,@img1)", con);
    cmd.Parameters.AddWithValue("@fname", txtfname.Text);
    cmd.Parameters.AddWithValue("@lname", txtlname.Text);
    cmd.Parameters.AddWithValue("@img1", @img1);
    cmd.ExecuteNonQuery();
    MessageBox.Show("Your details is captured successfully");
    ////txtfname.Text = "";
    txtlname.Text = "";
    pictureBox1.Image = null;
}

Convert.ToString()不会获得图像的字节数组,而是类型(System.Drawing.Bitmap)。尝试以下方法将图像转换为字节数组:

public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
     using (var ms = new MemoryStream())
     {
           imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
           return ms.ToArray();
     }
}

无论如何,如果您要将存储的图像与新图像进行比较以进行识别,恐怕这不会起作用,因为同一指纹的2个扫描图像不会共享相同的字节。

编辑

在你的评论中,你说你有另一个问题:当你将字节数组添加到参数时,行没有被保存。你不能用AddWithValue,你需要这样的参数:

cmd.Parameters.Add(new SqlParameter("@img1", SqlDbType.VarBinary,0, ParameterDirection.Input, false, 0, 0, "img1", DataRowVersion.Current, DBNull.Value));

最新更新