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!!!!!!!!!!!!!!!!!!!!