Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
falsche Konvertierung beim Speichern des Inhaltes einer PictureBox in eine Bilddatei
renzH
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

falsche Konvertierung beim Speichern des Inhaltes einer PictureBox in eine Bilddatei

beantworten | zitieren | melden

Hi,
ich speichere den Inhalt einer PictureBox mit folgendem Code:


private void ToolStMnuItemGrafSp_Click(object sender, EventArgs e)
        {
            string Pfad = @"D:\\Progs\\MTSpannung\\Grafiken\\";
            SaveFileDialog sFD = new SaveFileDialog();
            sFD.Filter = "jpg files (*.JPG)|*.jpg|png files (*.PNG)|*.png";
            sFD.InitialDirectory = Pfad;

            Bitmap img = new Bitmap(PicBox1.Width + 10, PicBox1.Height + 10);
            PicBox1.DrawToBitmap(img, new Rectangle(0, 0, PicBox1.Width, PicBox1.Height));

            if (sFD.ShowDialog() == DialogResult.OK)
            {
                Pfad = sFD.FileName;
                try
                {
                    if (sFD.Filter.Contains("jpg"))
                    {
                        img.Save(Pfad, ImageFormat.Jpeg);
                    }
                    else if (sFD.Filter.Contains("png"))
                    {
                        img.Save(Pfad, ImageFormat.Png);
                    }
                }
                catch (Exception SaveException)
                {
                    MessageBox.Show("Verzeichnisauswahl ungültig!\n\n\nCode:\n" 
                    + SaveException.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

Die so erzeugten Bilddateien werden zwar in anderen Grafikprogrammen korrekt angezeigt, jedoch erscheint bei Dateien, die nicht im jpeg-Format gespeichert wurden, die im Anhang ausgewiesene Fehlermeldung. Offenbar wird also in C# keine Konvertierung vorgenommen. Kann mir jemand sagen, warum das so ist und wie der Fehler abgestellt werden kann? VielenDank.
Attachments
private Nachricht | Beiträge des Benutzers
dscNRW
myCSharp.de - Member



Dabei seit:
Beiträge: 21

beantworten | zitieren | melden

Hi renzH,

was sagt denn sfd.Filter wenn du einen entsprechenden Breakpoint setzt?
private Nachricht | Beiträge des Benutzers
Papst
myCSharp.de - Experte



Dabei seit:
Beiträge: 438
Herkunft: Kassel

beantworten | zitieren | melden

Ist schon eine Weile her, aber ich vermute du prüfst die falsche Property.

Path.GetExtension(sFD.FileName)

Sollte dir das korrekte Ergebnis geben. In Filter steht immer der Filter.
private Nachricht | Beiträge des Benutzers
Spook
myCSharp.de - Member



Dabei seit:
Beiträge: 247
Herkunft: Esslingen a.N.

beantworten | zitieren | melden

Zitat von Papst
Ist schon eine Weile her, aber ich vermute du prüfst die falsche Property.

So ist es.

Filter enthält alle Auswahlmöglichkeiten. Du musst die FilterIndex Property verwenden. (Der Startindex ist 1).
private Nachricht | Beiträge des Benutzers
renzH
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

beantworten | zitieren | melden

Hi Papst, vielen Dank für die schnelle Antwort. Die Auswahl über if(sFD.FilterIndex == 1) und if(sFD.FilterIndex == 2) löst das Problem. Dank auch an Spook!
private Nachricht | Beiträge des Benutzers