1

MySQL データベースに保存されている画像の表示に問題があります。正常に保存されたかどうかはわかりませんが、画像をブロブファイルに変換するこの関数を使用すると、次の関数になります。

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

データベースを確認すると、BLOB と青いハイライトが表示されています。今、私は自分の画像ボックスに画像を表示したいと思います。バイト配列を画像に変換する機能もあります..

private Image byteArrayToImage(byte[] byteArrayIn)
{
    MemoryStream ms = new MemoryStream(byteArrayIn);
    ms.Position = 0;
    Image returnImage = Image.FromStream(ms);
    return returnImage;
}

アプリケーションを実行すると、次のように表示されます。

ArgumentException が保持されませんでした。パラメーターが無効です

私はこの構文を使用してみました:

pictureBox1.Image = byteArrayToImage(dr["img"] as byte[]);

または、最初に BLOB をバイト配列に変換する必要があるかどうかを考えていますか? 次に、関数を使用してバイト配列を画像に変換しますか?
名前をクリックすると、情報が表示されるはずですが、残念ながら、引数の例外が発生しています..

int i = dataGridView1.SelectedCells[0].RowIndex;
string firstname = dataGridView1.Rows[i].Cells[0].Value.ToString();
string lastname = dataGridView1.Rows[i].Cells[1].Value.ToString();

Connection connect = new Connection();
MySqlConnection mySqlConnect = new MySqlConnection(connect.connString());
mySqlConnect.Open();

string s = "SELECT * FROM tbl_contacts WHERE username = '" + label1.Text + "' and (fname = '" + firstname + "' and lname = '" + lastname + "')";

MySqlCommand mySQL = new MySqlCommand(s, mySqlConnect);
mySQL.ExecuteNonQuery();
MySqlDataReader dr = mySQL.ExecuteReader();

if (dr.HasRows)
{
    dr.Read();
    txtFname.Text = dr["fname"].ToString();
    txtLname.Text = dr["lname"].ToString();
    txtBday.Text = dr["birthday"].ToString();
    txtEmail.Text = dr["email"].ToString();
    txtMobile.Text = dr["mobile"].ToString();
    txtAddress.Text = dr["address"].ToString();
    txtNotes.Text = dr["notes"].ToString();
    pictureBox1.Image = byteArrayToImage(dr["img"] as byte[]);
}
4

2 に答える 2

0

そのようなことを試してください:

byteArrayToImage(dr.GetSqlBytes(dr.GetOrdinal("img")).Buffer);
于 2013-01-15T07:56:06.360 に答える