Entwickler-Ecke
Sonstiges (.NET) - AufnahmeDatum einer BildDatei ändern
Coja - Do 28.11.13 20:25
Titel: AufnahmeDatum einer BildDatei ändern
Hallo,
ich würde gerne das Aufnahmedatum von mehreren Bilddateien ändern, in dem ich einen Zeitoffset darauf addiere.
Dazu lese ich das Datum ein und versuche es auch zu setzen.:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| System.IO.File.SetCreationTime(path8,System.IO.File.GetCreationTime(path8) + timediff); System.IO.File.SetLastWriteTime(path8,System.IO.File.GetLastWriteTime(path8) + timediff); System.IO.File.SetLastAccessTime(path8,System.IO.File.GetLastAccessTime(path8) + timediff); |
Das Aufnahmedatum kann ich leider weder lesen noch schreiben (siehe Anhang).
Kennt jemand eine Methode dafür?
Viele Grüße Coja
Moderiert von
Christian S.: Quote- durch C#-Tags ersetzt
Coja - Sa 30.11.13 00:28
Hallo,
danke, das Datum kann ich jetzt schon einmal auslesen:)
Nun würde ich noch gerne das Datum ändern und das Bild mit dem neuen Datum speichern.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| Image Bild2 = Image.FromFile(pathBild2);
PropertyItem propItem = Bild2.GetPropertyItem(306); Bild2.SetPropertyItem(propItem); |
Wie im Kommentar zu lesen ist, macht mir die Konvertierung des Datum-Strings (ich habe diese Datum zusätzlich auch als DateTime vorliegen) in die Bytes für propItem.Value zu schaffen.
Kann mir da jemand auf die Sprünge helfen?
Viele Grüße
Coja
Coja - So 01.12.13 17:00
Hallo,
für die Konvertierung in einen String habe ich mir schon eine Funktion geschrieben, der String hat das gleiche Format wie das ausgelesene Datum (zum Beispiel 2013:11:01 00:39:16). Hier der COde wie ich das Datum auslese:
C#-Quelltext
1: 2: 3: 4: 5:
| Image Bild2 = Image.FromFile(pathBild2); ASCIIEncoding encBild2 = new System.Text.ASCIIEncoding(); PropertyItem propItem = Bild2.GetPropertyItem(306); String decodedString = encBild2.GetString(propItem.Value); textBox1.Text = "Zeitstempel: " + decodedString; |
Nun möchte ich das Datum wieder in die Datei Bild 2 schreiben. Dazu muss der String "2013:11:01 00:39:16" über die Ascii-Codierung in Bytes umgewandelt werden und dann mit
propItem.Value = gesetzt werden. Bei der Umwandlung des Strings in Byte hakt es derzeit ;)
Viele Grüße
Coja
Th69 - So 01.12.13 17:49
Hallo,
also von string nach byte[]? Dann schau dir mal die anderen Methoden von ASCIIEncoding an.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!