Wie konvertiert BLOB-Bild
Ich habe ein problem bei der Anzeige das Bild, das gespeichert ist in meiner MySQL-Datenbank.
Ich weiß nicht, ob ich gespeichert habe es erfolgreich aber mit dieser Funktion, die konvertiert Bild, um eine blob-Datei, hier ist die Funktion:
private byte[] imageToByteArray(Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
Wenn ich meine Datenbank sagt es BLOB mit blau markieren. Nun, ich möchte das Bild in meiner picturebox. Ich habe auch eine Funktion zum umwandeln byte-array in Bild..
private Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
ms.Position = 0;
Image returnImage = Image.FromStream(ms);
return returnImage;
}
Wenn ich die Anwendung ausführen, es sagt:
ArgumentException wurde unheld, ein Parameter ist nicht gültig
Habe ich versucht, mit dieser syntax:
pictureBox1.Image = byteArrayToImage(dr["img"] as byte[]);
Oder ich bin am überlegen ob ich konvertiert BLOB-Daten in Byte-Array zuerst? dann verwenden Sie die Funktion zum konvertieren des byte-array in Bild?
wenn ich auf den Namen, es sollen die Informationen angezeigt, die, leider, ich erhalte die argument-Ausnahme..
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[]);
}
- Wo ist der ArguementException geworfen, in der ersten oder zweiten bit-code? Auch, wie Sie das abrufen der Daten von der Datenbank?
- Wenn Sie dies ausführen im debugger, sollten Sie die option " überprüfen der ArgumentException ausgelöst. Dieses sollte a) geben Sie den Namen des Arguments, das nicht gültig ist, und b) ein stack-trace zeigt, dass shere es wird geworfen. Ohne zu wissen, eine oder beide dieser Stücke von Informationen, könnten wir raten, für Tage.
- Können Sie sagen, was
dr["img"].GetType()
gibt? - Ataş es sagt-system.byte[]
- Möglich, Duplikat der Einfache Möglichkeit zum konvertieren eines Bitmap-und Png-Bild zu text und Umgekehrt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie etwas wie das :
ArgumentException was unheld, Parameter is not valid
aufgrund eines beschädigten Bildes. Ihr Bild hat nicht richtig sparen. Speichernbyte[]
Sie erhalten haben, in einer Datei in der Festplatte und versuchen Sie es umbenennen, wie.jpg
oder.png
und versuchen zu öffnen.Korruption von binären Daten geschieht aus verschiedenen Gründen,
Length
von binären Daten nicht gespeichert oder getrimmt werden. Wenn Ihre Datenbank konfiguriert ist zum speichern5kb
jemand schreibt code, um die trim-Daten zu5kb
anstatt Ausnahme oder Anhängen buffer nicht korrekt kodiert, resultierend in der fehlenden letzten paar bytes.