2つの画像を比較して、画像のピクセル値をチェックして同じ画像であるかどうかを確認したいのですが、 DBには、画像がBLOB
タイプとして保存された列を持つテーブルがあります。"パラメータが有効でない"例外を解決する方法
画像ボックスに画像をアップロードし、画像ボックス画像の画素値がDBの画像の画素値と類似している場合、その画像をDBと照合して「CID」という列の値を取り出す。
コードはC#で、MySqlとVisualStudioを使用しています。
しかし、それはParameter is not valid
の例外を与える私はここで間違って何をしているのですか?どんな助けも高く評価されます。
private void search_botton_Click_1(object sender, EventArgs e)
{
if (leftRadio.Checked == true)
{
try
{
string MyConnection = "datasource=127.0.0.1;port=3306;username=root;password=;database=ahbis";
string sql = "SELECT * FROM criminal";
MySqlConnection MyConn = new MySqlConnection(MyConnection);
MySqlCommand MyCommand = new MySqlCommand(sql, MyConn);
MySqlDataReader MyReader;
MyConn.Open();
MyReader = MyCommand.ExecuteReader();
while (MyReader.Read())
{
//byte[] should be converted to Bitmap
byte[] img_Byte = (byte[])(MyReader["palmHistogram_A_L"]);
Image img1_IMAGE = (Bitmap)((new ImageConverter()).ConvertFrom(img_Byte));
//img1 = new Bitmap(img1_IMAGE);
Bitmap img1 = (Bitmap)new ImageConverter().ConvertTo(img1_IMAGE, typeof(Bitmap[]));
img2 = new Bitmap(histogram_pictureBox.Image);
string img1_ref, img2_ref;
if (img1.Width == img2.Width && img1.Height == img2.Height)
{
for (int i = 0; i < img1.Width; i++)
{
for (int j = 0; j < img1.Height; j++)
{
img1_ref = img1.GetPixel(i, j).ToString();
img2_ref = img2.GetPixel(i, j).ToString();
if (img1_ref != img2_ref)
{
count2++;
flag = false;
break;
}
count1++;
}
}
if (flag == false)
MessageBox.Show("No matches found!");
else
MessageBox.Show("Match found!");
string cid = MyReader.GetString("CID");
textBox1.Text = cid;
}
else
MessageBox.Show("Something went wrong!");
}
MyConn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
コードには次の部分もあります。
Bitmap img1,img2;
int count1 = 0, count2 = 0;
bool flag = true;
例外をどのラインで取得しますか? –
@AnkitVijay - "System.ArgumentException"がSystem.Drawing.dllの行にありました;ビットマップimg1 =(ビットマップ)tc.ConvertFrom(img_Byte); –
あなたはここを見ましたか?https://stackoverflow.com/questions/629955/parameter-not-valid-exception-loading-system-drawing-image –