2016-10-06 3 views
-1

私はフィンガープリントプロジェクトに取り組んでいます。下のコードは、指紋イメージをバイト配列に変換できますが、3人の人の指紋をとった場合、送信される値は同じ値であり、一意ではありません。一人一人一人であることを確認する必要があるため、一人一人一人とする予定です。どんな助けもplsに感謝されます。フィンガープリントバイト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; 
} 
+1

同じ画像であれば同じです。 3人の異なる人が同じ画像を3回使用するのはなぜですか? – ThePerplexedOne

+5

'Convert.ToString(pictureBox1.Image)' **はイメージデータを取得しません** - 値がすべてSystem.Drawing.Bitmapという文字列に基づいているのと同じ理由です – stuartd

+1

注:指紋の比較に関わるロジックを過小評価している可能性があります。 –

答えて

2

Convert.ToString()は、あなたのイメージのバイト配列を取得するつもりはないが、タイプ(System.Drawing.Bitmap).Tryこのメソッドは、バイト配列に、あなたの画像を変換する:

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)); 

は、詳細はthis answerを参照してください。

+0

私は以前にその方法を試しましたが、うまく動作しません。私は救いませんでした。私のコードの間違った場所に置いているかもしれません。どこに置いたと思いますか?何ができるのですか? – Innoujata

+0

データベースに列型があるため、保存されていない可能性があります。 – Pikoh

+0

データベースの列型はvarbinary(max) – Innoujata