ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
8544
8544
EMPFEHLEN
-
06.06.04 20:12 #1
Hi Community,
ich habe da ein kleines Problem.
per OpenFileDialog öffne ich ein Bild und übergebe es einer PictureBox.
Nachdem ich es verändert habe, möchte ich es wieder speichern (mit einem SaveFileDialog).
Wenn ich es nun unter einem neuen Dateinamen speichere, ist alles perfekt.
Aber Wenn ich den gleichen Namen nehme, bekomme ich immer eine Exception (System.Runtime.InteropServices.ExternalException - Zusätzliche Angaben : In GDI+ ist ein allgemeiner Fehler aufgetreten).
Ich habe schon herausgefunden, dass die Datei von einem anderen Prozess verwendet wird. Aber warum? Wird nach 'pictureBox1.Image.FromFile(string FileName)' die Datei nicht mehr geschlossen?
Wie kann man das Problem lösen?
Ich hänge 2 Beispiel-Methoden an, bei denen sich der Fehler ereignet.
Danke schonmal im Vorraus.
Asterix
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
private void button1_Click(object sender, System.EventArgs e) { if(ofd.ShowDialog() == DialogResult.OK) { this.pictureBox1.Image = Image.FromFile(this.ofd.FileName); } } private void button2_Click(object sender, System.EventArgs e) { if(sfd.ShowDialog() == DialogResult.OK) { this.pictureBox1.Image.Save(this.sfd.FileName); } }
-
16.08.04 22:57 #2Maximius Tutorials.de Gastzugang
Das kommt, weil das ASP.NET account kein zugang hatt zur stelle wo du saven willst.
-
17.08.04 12:51 #3
Hallo Maximus,
das hat nichts mit ASP.NET zu tun. Also auch keine Zugriffsrechte. Ich arbeite mit WinForms.
Außerdem habe ich das Problem schon gelöst. GDI+hällt das zu bearbeitende Bild offen, so dass Du es nicht ein zweites Mal öffnen kannst. Du mußt es in einen Memory Stream einlesen, den dann schließen. Von dort aus kannst Du es in die PicBox saugen. Wenn Du es nach einer Veränderung Speichern willst, ist die Datei geschlossen und Du kannst es Speichern.
Asterix
-
Habe auch diesen GDI+ Fehler. Also auf meinem lokalen Testsytem läuft die Anzeige der Newsbilder. Nur auf dem Webserver nicht...
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
foreach (DataRow row in dsData.Tables[0].Rows) { string strTitel = row["NewsTitel"].ToString(); string strInfo = "<i>" + row["NewsInfo"].ToString() + "</i>"; DateTime dtDatum = Convert.ToDateTime(row["NewsDatum"]); string strNews = row["News"].ToString(); string imgName = "newsimg/" + row["NewsID"].ToString() + ".jpg"; if (row["NewsBild"].ToString().Length > 0) { if (!File.Exists(Server.MapPath(imgName))) { byte[] image = (byte[])row["NewsBild"]; MemoryStream stream = new MemoryStream(); stream.Write(image, 0, image.Length); Bitmap bitmap = new Bitmap(stream); bitmap.Save(Server.MapPath(imgName), System.Drawing.Imaging.ImageFormat.Jpeg); //bitmap.Dispose(); //stream.Close(); } } else { imgName = ""; } pnlNews2.Add(imgName, strTitel, dtDatum, strInfo, strNews); }
Und hier die dazugehörigen Fehlermeldung:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
Serverfehler in der Anwendung /. -------------------------------------------------------------------------------- Allgemeiner Fehler in GDI+. Beschreibung: Unbehandelte Ausnahme beim Ausführen der aktuellen Webanforderung. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde. Ausnahmedetails: System.Runtime.InteropServices.ExternalException: Allgemeiner Fehler in GDI+. Quellfehler: Zeile 98: stream.Write(image, 0, image.Length); Zeile 99: Bitmap bitmap = new Bitmap(stream); Zeile 100: bitmap.Save(Server.MapPath(imgName), System.Drawing.Imaging.ImageFormat.Jpeg); Zeile 101: //bitmap.Dispose(); Zeile 102: //stream.Close(); Quelldatei: d:\inetpub\kontaktpool.de\news.aspx.cs Zeile: 100 Stapelüberwachung: [ExternalException (0x80004005): Allgemeiner Fehler in GDI+.] System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) +387246 System.Drawing.Image.Save(String filename, ImageFormat format) +69 news.ShowNews() in d:\inetpub\kontaktpool.de\news.aspx.cs:100 news.Page_Load(Object sender, EventArgs e) in d:\inetpub\kontaktpool.de\news.aspx.cs:22 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +34 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive() +47 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061 -------------------------------------------------------------------------------- Versionsinformationen: Microsoft .NET Framework-Version:2.0.50727.832; ASP.NET-Version:2.0.50727.832
Ähnliche Themen
-
Warum wirft Exception andere Exception?
Von Onkel Schuppig im Forum C/C++Antworten: 5Letzter Beitrag: 01.03.10, 13:45 -
Warum man statt Image.getScaledInstance() besser Graphics.drawImage verwenden sollte
Von Thomas Darimont im Forum JavaAntworten: 1Letzter Beitrag: 22.01.09, 14:16 -
Fehler warum? Image Create
Von my-azur im Forum PHPAntworten: 2Letzter Beitrag: 09.08.05, 19:39 -
An unhandled exception - Doch warum
Von Konstantin Gross im Forum .NET ArchivAntworten: 7Letzter Beitrag: 09.03.04, 22:03 -
Grösse eines Pics in PicBox anpassen // Scrollbar in PicBox
Von Aarisch im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 02.07.03, 16:02





Zitieren
Login





