Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ich möchte mit LoadAsync und einem MemoryStream ein Bild aus der Datenbank in ein Bildfeld laden

Laden Sie die Bytes nicht in das Bild, das würde den Zweck dessen, was Sie erreichen möchten, zunichte machen ... (beachten Sie, dass dies ein Quick-n-Dirty ist, um das Bild in eine temporäre Datei zu bringen ... es gibt eine viele zusätzliche Überlegungen, nicht zuletzt das Löschen der temporären Datei, wenn Sie fertig sind)

byte[] byteBLOBData = (byte[])ds.Tables["magazine_images"].Rows[c - 1]["image"];
string tempImageFileName = Path.Combine(Path.GetTempPath(), Path.GetTempFileName() + ".jpg");
using( FileStream fileStream = new FileStream(tempImageFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite) ) {
    using( BinaryWriter writer = new BinaryWriter(fileStream) ) {
        writer.Write(byteBLOBData);
    }
}

pictureBox1.LoadCompleted += LoadCompleted;
pictureBox1.WaitOnLoad = false;
pictureBox1.LoadAsync(tempImageFileName);

...

private static void LoadCompleted( object sender, AsyncCompletedEventArgs e ) {
    if( e.Error != null ) {
        // will get this if there's an error loading the file
    } if( e.Cancelled ) {
        // would get this if you have code that calls pictureBox1.CancelAsync()
    } else {
        // picture was loaded successfully
    }
}

siehe auch LoadProgressChanged Veranstaltung