Bitmap -> System.IOStream



  • Wie kann man denn ein Bitmap in einen System.IO.Stream. Umgekehrt gehts ja einfach

    System.IO.Stream = GetStreamVonIrgendwoHer();
    Bitmap myBitmap = new Bitmap();
    myBitmap.FromStream(myStream);
    

    Aber umgekehrt 😕

    Brauch ich deshalb, weil ich aus einer Datenbank ein Bild als Byte[] bekomme, das will ich umwandeln und in einem PictureControl anzeigen lassen!

    Danke



  • Ungetestet:

    Bitmap bmp = Bitmap.FromStream(new System.IO.MemoryStream(byteArray));
    


  • Von Bitmap (Byte[]) nach Stream!!! 🙄 😉



  • MemoryStream stream = new MemoryStream();
    pictureBox.Image.Save(stream, ImageFormat.Jpeg);
    


  • Von Bitmap (Byte[]) nach Stream!!! 🙄 😉



  • Hört sich gut an ... werd ich ausprobieren



  • Habe den Tip übers WE mal ausprobiert und habe feststellen müssen, daß der Code nach wie vor nicht funktioniert ... 😞

    Was ist an diesem Code-schnippsel noch falsch?

    byte[] bImage = (byte[])my_data_row["test_id"];
    MemoryStream myStream = new MemoryStream();
    stream.Write(bImage, 0, bImage.Length());
    Bitmap myBitmap = (Bitmap)Image.FromStream(stream); //  <- hier wird die Ausnahme geworfen :(
    

    Folgende Ausnahme wird geworfen:
    Parameter is not valid



  • Nur so eine Idee - du solltest zwischen Schreiben und Lesen den Stream-Pointer auf anfang zurücksetzen.



  • Vielen Dank! Das war es!!!!

    Hier noch mal der vollständige und funktionierende Code für alle, die später mal am selben Problem nagen.

    MemoryStream myStream = new MemoryStream();
    myStream.Write(b, 0, b.Length);
    myStream.Position = 0;  // !!!!!!!!!!!!!!!
    pictureBox1.Image = Bitmap.FromStream(myStream);
    


  • War gestern wohl etwas voreilig, denn es funktioniert NICHT! Leider ... 😮

    Nochmal die vollständige Fragestellung:
    Wie kann man aus einem Byte-Array (byte[]), denn so bekommt man Bilder aus einer Datenbank, in ein Bitmap verwandeln? Die MSDN hat keinerlei(!!!) Beispielcode hierfür und ich doktore schon seit 5 Tagen an diesem verreckten Problem rum ...

    Folgender Code wirft die Ausnahme: "Parameter is not valid."

    DataRow container = hicDataSet1.Tables["my_containerr"].Rows.Find(id);
    byte[] b = (byte[])container["my_image_field"];
    MemoryStream s = new MemoryStream();
    s.Write(b, 0, (int)b.Length);
    s.Position = 0;
    Bitmap test = (Bitmap)Bitmap.FromStream(s);   //  "Parameter is not valid."
    


  • na dann will ich dich mal erlösen:

    private void button1_Click(object sender, EventArgs e)
            {
                // load image from file
                string path = "F:\\Daten\\test.jpg";
                Image t = Image.FromFile(path);
                pictureBox1.Image = t;
    
                // store into a DataTable
                DataTable data = new DataTable();
                data.Columns.Add("image", typeof(byte[]));
    
                DataRow row =data.NewRow();                      
                MemoryStream stream =new MemoryStream();
                BinaryFormatter formatter = new BinaryFormatter();
                formatter.Serialize(stream,t);
                row["image"] = stream.ToArray();
                data.Rows.Add(row);
    
                //get Image from DataTable
    
                byte[] bytes =(byte[]) data.Rows[0]["image"];
    
                MemoryStream newStream = new MemoryStream(bytes);
                newStream.Position = 0;
                BinaryFormatter newFormatter = new BinaryFormatter();
    
                Image fromDataRow = (Image)newFormatter.Deserialize(newStream);
                pictureBox2.Image = fromDataRow;
    
            }
    


  • Vielen Dank vormals ... ich werds gleich mal prüfen. Wenns nun klappt, dann sing ich ein dreifaches Hallelujah ... 🙂



  • Hallelujah! Hallelujah! Hallelujah!

    Vielen Dank!!!!!!!!!!!!!!!!!!!! 🙂 🙂 🙂 🙂 🙂 🙂 🙂


Anmelden zum Antworten