Bildabmessungen prüfen
-
Tut mir leid für die wenigen Angaben von mir: C# -> WINFORM
Zum Speichern habe ich folgendes mal versucht, jedoch wird gar nichts gespeichert.
Das liegt wohl daran, dass ich keine Datei dahinter habe, oder?
Wie/wo muss ich meine Ursprungsdatei (also von C:\Bilder) zuweisen? Reicht da der Pfad?saveFileDialog1.DefaultExt = "jpg"; saveFileDialog1.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*"; saveFileDialog1.AddExtension = true; saveFileDialog1.RestoreDirectory = true; saveFileDialog1.Title = "Speicherort?"; saveFileDialog1.InitialDirectory = @"D:\Produktbilder"; saveFileDialog1.FileName = speicherArtNr; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { MessageBox.Show("Speicherort: " + saveFileDialog1.FileName); } else { MessageBox.Show("You hit cancel or closed the dialog."); } saveFileDialog1.Dispose(); saveFileDialog1 = null;
-
http://msdn.microsoft.com/de-de/library/system.windows.forms.savefiledialog.aspx
Fordert den Benutzer zur Auswahl eines Speicherorts für eine Datei auf. Diese Klasse kann nicht geerbt werden.
-
Hat geklappt, eigentlich ganz einfach ...
File.Copy(sourcepath, destinationpath);
Dankeschön!
-
Problem noch nicht ganz gelöst.
Wenn ich die Datei überschreiben möchte, dann wollte ich die vorhandene Datei löschen und die neue wieder kopieren. Allerdings wird meine Datei nicht gelöscht ...
File.Delete(destinationpath); File.Copy(sourcepath, destinationpath);
Kann mir jemand sagen warum??
Meine Pfadangabe stimmt, sonst würde es mit dem kopieren ja nicht funktionieren ...
-
-
@Knuddelbaer
Tut mir leid, wenn ich mich so blöd anstelle ...Hab das Kopieren/Löschen wie hier gezeigt versucht umzusetzten:
http://msdn.microsoft.com/en-us/library/system.io.file.copy(VS.71).aspxWie gesagt, Kopieren klappt wunderbar!
Nur das Löschen nicht. Und ich würde mich wirklich über einen Tipp freuen ...
-
Geht nicht ist keine Fehlerbeschreibung. In Deinem Code löschst Du eine Datei und kopierst darauf wieder eine an den gleichen Punkt an dem Du zuvor gelöscht hast.
Wenn Du jetzt erwartest das es keine Datei mehr gibt weiß ich nicht wie ich helfen soll.
Welches Ergebnis wird erwartet, wie schaut das Ergebnis aus ? Gibt es eine Exception ? Fehlermeldungen ?
-
Ok, danke. Hab nun hoffentlich verstanden was Du meinst! Gelobe Besserung!
Das Problem ist, dass die Datei gar nicht gelöscht wird, sie ist nie weg, dass eine neue rein kopiert werden könnte.
Wenn die AnweisungFile.Delete(destinationpath);
ausgeführt wird, lande ich immer in meiner catch-Schleife.
Selbst wenn ich "hart-codiert" einen Dateipad angebe (der sicher so existiert) z.B.
File.Delete(@"D:\Produktbilder\HA-01.jpg");
geht es nicht.
Ich hoffe, mein Problem ist nun verständlicher?!
Anbei mal die ganze Funktion ...//Kopieren des Bildes in das neue Verzeichnis und Speichern der Daten in der DB public void BildKopieren(string speicherArtNr, string sourcepath) { try { if (vorhanden == true) { string destinationpath; destinationpath = strPfad + speicherArtNr + ".jpg"; File.Delete(destinationpath); //Kopieren der Datei in das neue Verzeichnis File.Copy(sourcepath, destinationpath); MessageBox.Show("Speicherort: " + destinationpath); lblPfad.Text = destinationpath; } else { string destinationpath; destinationpath = strPfad + speicherArtNr + ".jpg"; File.Copy(sourcepath, destinationpath); MessageBox.Show("Speicherort: " + destinationpath); lblPfad.Text = destinationpath; } } catch { MessageBox.Show("Das Bild wurde nicht im neuen Verzeichnis gespeichert", "Fehler", MessageBoxButtons.OK); } }
-
Du hast erst angefangen , hm ?
catch (Exception ex) { MessageBox.Show(ex.Message,"Der Grund"); MessageBox.Show("Das Bild wurde nicht im neuen Verzeichnis gespeichert", "Fehler", MessageBoxButtons.OK); }
In der Exception steht warum es nicht klappt.
-
Ja, bin Neuling ...
Danke, das war sehr hilfreich!Kann mir nun auch denken, an wo das Problem liegt.
Die Exception sagt, dass
Der Prozess kann nicht auf die Datei ... zugreifen, da sie von einem anderen Prozess verwendet wird.
Ich lasse immer ein Bild zu einem Artikel anzeigen, d.h. ich möchte eine Datei löschen, die ich verwende. Sollte also erst meine PictureBox leeren, bevor ich lösche ...
-
Vllt hilft Dir das hier:
using(Bitmap mybitmap = Bitmap.FromFile("mypic.png")) PictureBox1.Picture = new Bitmap(mybitmap);
Das sorgt dafür das die Bitmap instanz, die da eventuell auf das File zugreift bzw. dieses hält asap freigegeben wird. Die Picturebox wird einfach mit einer Kopie versorgt. (Kostet Zeit und Speicher).
-
Hab die Lösung gefunden:
http://support.microsoft.com/kb/311754/de
-
Mit dem Wissen ist mein Vorschlag natürlich Blödsinn
Thx für den Link.