Entwickler-Ecke

IO, XML und Registry - Image als bmp speichern


GURKE deluxe - Di 12.10.10 14:15
Titel: Image als bmp speichern
Hallo,
Ich möchte das Bild einer PictureBox abspeichern.

Dazu dachte ich mir folgendes:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
Stream myStream;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();

saveFileDialog1.Filter = ".bmp files (*.bmp)|*.bmp| txt files (*.txt)|*.txt";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.InitialDirectory = this.standardPfad;

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
    if ((myStream = saveFileDialog1.OpenFile()) != null)
    {
        StreamWriter wText = new StreamWriter(myStream);
        if (saveFileDialog1.Filter == ".bmp files (*.bmp)|*.bmp")
        {
            pbAusgabe.Image.Save(saveFileDialog1.FileName);
        }
        else
        {
            wText.Write(rtbEingabe.Text);
        }
        wText.Flush();
        myStream.Close();
    }
}


Er speichert auch eine Datei ab, nur diese kann ich dann nicht lesen, weder mit der normalen Windows Bild- und Faxanzeige, noch mit Paint. Was mache ich da falsch?


Gruß
GURKE

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt


danielf - Di 12.10.10 14:22

Hallo,

die Image.Save Methode ist überladen (MSDN [http://msdn.microsoft.com/en-us/library/9t4syfhh.aspx]). Gib einfach das gewünschte Format an, dann sollte es klappen.

Gruß

Edit: Ich habe es zuerst verworfen, aber ich denke es ist doch eine Erwähnung wert. Der Filter des saveFileDialog wird meines Erachtens nicht nach dem ShowDialog gesetzt. Dementsprechend würde die erste Bedingung nie zutreffen (aber ich gehe davon dass du dies bemerkt hättest).


Th69 - Di 12.10.10 14:34

Zur Abfrage auf den "gewählten Filtertyp" solltest du den "FilterIndex" abfragen (denn wie Daniel schon geschrieben hat, ändert sich der Filter als solches nicht!).


GURKE deluxe - Di 12.10.10 19:03

Funktioniert! Danke!


GURKE