Image to Bitmap

Coooder
Hallo,

ich versuche grad ein Bild welches mein Image-container anzeigt in ein Bitmap objekt zu packen. Leider klappts nich ... finde bei google auch nur beispiele um es genau anders rum zu machen :/
kann mir da einer weiter helfen?
Peter Bucher
Salute Coooder

Habs nicht probiert, aber das schaut doch vielversprechend aus:
-  http://msdn.microsoft.com/en-us/library/0wh0045z.aspx


Gruss Peter
TheGear
Hallo Coooder,

Zitat:
Leider klappts nich ...

Was ? Gibt es Fehler ?

Ansonsten:  MSDN Bitmap Constructor

Edit: Peter war schneller Augenzwinkern

André
Karill Endusa
Das Problem hier ist, so nehme ich an, dass es sich bei dem Bild im genannten image container ja um ein BitmapImage-Objekt handelt, welches nicht einfach (so hab ich das zumindest in Erinnerung) mal eben in ein System.Drawing.Bitmap gewandelt werden kann.

Sollten bis hier meine Vermutungen stimmen, so habe ich folgendes Quelltext-Snippet gefunden:

C#-Code:
BitmapImage bitmapSource;

using(MemoryStream outStream = new MemoryStream())
{
      BitmapEncoder enc = new BmpBitmapEncoder();
      enc.Frames.Add(BitmapFrame.Create(bitmapSource));
      enc.Save(outStream);
      System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(outStream);
}

(Quelle:  social.msdn.microsoft.com - Bitmap<->BitmapImage conversion)
hoffe, dass das weiterhilft

so far
Karill Endusa
Coooder
danke erstma für eure antworten

scheint beides nich so zu klappen, in meinem ImageContainer habe ich eine

C#-Code:
System.Windows.Media.ImageSource

zur verfügung. Leider kein BitmapImage oder

C#-Code:
System.Drawing.Image

:/

es scheint auch so erstmal keine umwandlungsmethode zu geben
MrSparkle
Zitat von Coooder:
in meinem ImageContainer habe ich eine System.Windows.Media.ImageSource

ImageSource ist eine abstrakte Klasse, also kann dein Objekt auch nicht von diesem Typ sein. Sicherlich handelt es sich um ein System.Windows.Media.Imaging.BitmapImage-Objekt, oder etwas vergleichbares. Dieses kannst du dann in einen Stream schreiben, um daraus ein System.Drawing.Image zu erstellen, wie es Karill Endusa beschrieben hat.

Christian
Coooder
ich habs doch versucht

C#-Code:
encoder.Frames.Add(BitmapFrame.Create(screenshotImg.Source));

hier macht er aber den fehler

Fehlermeldung:
1-Argument: Kann nicht von "System.Windows.Media.ImageSource" in "System.Windows.Media.Imaging.BitmapSource" konvertiert werden
Coooder
hab ich da was falsch verstanden? oder hat vieleicht noch jemand nen Lösungsvorschlag? :(
MrSparkle
Hi Coooder,

dann wäre es hilfreich, wenn du uns sagen könntest, von welchen Typ dein ImageSource-Objekt ist. Das kannst du sehr einfach mit dem Debugger oder mit der typeof-Anweisung herausbekommen.

Christian
Coooder
System.Windows.Interop.InteropBitmap

habs mir in einer textbox ausgeben lassen
MrSparkle
Zitat von Coooder:
System.Windows.Interop.InteropBitmap

InteropBitmap erbt von BitmapSource, daher sollte eine Umwandlung nicht die von dir angegebene Exception auslösen. Das Beispiel von Karill Endusa sollte also auch für InteropBitmaps funktionieren. Dazu gibt es auch einen Beitrag bei StackOverflow:  WPF: System.Windows.Interop.InteropBitmap to System.Drawing.Bitmap.

Zitat von Coooder:
habs mir in einer textbox ausgeben lassen

Warum einfach, wenn's auch kompliziert geht? Einfacher wäre gewesen, einen Breakpoint auf die entsprechende Code-Zeile zu setzten und dann den Mauszeiger über den Bezeichner halten, bis die Infos angezeigt werden.

Christian
Coooder
ok geht nun, danke euch allen