Laden...

Bitmap lässt sich nicht speichern

Erstellt von thepaul vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.279 Views
T
thepaul Themenstarter:in
151 Beiträge seit 2005
vor 13 Jahren
Bitmap lässt sich nicht speichern

Hey,
ich habe nen ganz einfachen Code:

 string filename = string.Format ("image{0}.png", i);
                    Log.Debug (filename);
                    tmp.Save (filename, System.Drawing.Imaging.ImageFormat.Png);

Dabei bekomme ich allerdings ne Exception:

ArgumentException wurde nicht behandelt: ungültiger Parameter.

Mehr infos gibts nciht und ich hab jetzt schon ewig rumprobiert und im Netz gesucht.

Habt ihr vlt ne Idee woran das liegen könnte?

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

wie erstellst du das Bild?
Wenn das aus nem anderen Bild geladen wird das kein PNG ist dann kanns das sein.

Was ist wenn du das ImageFormat nicht angibst?

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

T
thepaul Themenstarter:in
151 Beiträge seit 2005
vor 13 Jahren

Das Bild ist eigentlich ein Screenshot, zu Testzwecken wird es aber aus einer png-Datei geladen. Daran liegt also cicht.

Was mir gerade auffällt.

Ich benutze das Bitmap vorher in einem using-Block. Der gibt ja normalerweise hinterher die Resourcen frei. Könnte das das Problem sein?

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

Könnte das das Problem sein?

Ja, sogar ziemlich sicher.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

T
thepaul Themenstarter:in
151 Beiträge seit 2005
vor 13 Jahren

Ich hab das using jetzt weggemacht aber es geht immer noch nicht.

Ich habe das ganze nochmal vereinfacht, vlt sieht jemand jetzt den Fehler:


var prov = new ScreenshotImageProvider (handle);

            for (int i = 0; i < 100; i++)
            {
                var b = prov.NextImage ();
                var file = path + "image" + i + ".bmp";
                b.Save (file);

                Thread.Sleep (300);
            }

gibt:
Allgemeiner fehler in GDI+.

Der Screenshot wird über

Graphics.CopyFromScreen (left, top, 0, 0, new Size (width, height));

erzeugt.

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

verwende statt dem Thread.Sleep lieber einen Timer und bauen den Dateinamen mit den Methoden der Path-Klasse zusammen (Path.Combine). Ich denke dass der Fehler vom (falschen) Dateinamen kommt. Wie schaut ein solcher zB aus (aus dem Debug kopieren und posten 😉?

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"