2009-03-24 5 views
4

Ich möchte ein Bild im EXIF-Format mit System.Drawing.Image.Save oder eine ähnliche Methode in einer C# -Anwendung mit .NET Framework v3.5 speichern. Die MSDN-Dokumentation listet EXIF ​​als eine Option für ImageFormat auf. Es scheint jedoch nicht unterstützt zu werden - zumindest nicht ohne eine mir unbekannte Konfiguration. Wenn ich die integrierten Encoder über ImageCodecInfo.GetImageEncoders() aufzählen, ist EXIF ​​nicht enthalten. (Eingebaute Encoder auf meinem Computer (Vista Ultimate x64) sind: BMP, JPEG, GIF, TIFF und PNG.) Wenn ich ein Bild unter Verwendung der ImageFormat.Exif-Eigenschaft speichere, erhalte ich einfach das Standard-PNG-Format.So speichern Sie eine EXIF-Format-Bilddatei in .NET 3.5

Wie kann ich ein Bild im EXIF-Format mit .NET 3.5 speichern?

Antwort

0

Haben Sie gesehen: Lossless JPEG Rewrites in C#

+0

Danke, das ist ein interessanter Artikel. Es gilt für JFIF-Dateien, aber nicht für EXIF. Trotzdem ist es ein cleverer Ansatz. – TMarshall

4

EXIF ​​ist kein Bilddateiformat per se, sondern ein Format für die Meta-Daten in JPEG-Bildern gefunden mit dem DSC-kompatiblen (Digital Still Camera) Standard, wie durch JEITA angegeben .

GDI + (d. H. Microsoft .NET Framework) ermöglicht das Lesen und Schreiben von Metadatenbildeigenschaften über Image.PropertyItems, jedoch sind die von GDI + bereitgestellten EXIF-Eigenschaften ziemlich umständlich und konvertieren die Werte nicht wie erwartet. Es wird tatsächlich viel Arbeit benötigt, um diese Werte nativ lesen/schreiben zu können (z. B. müssten Sie Binärfelder entpacken, die speziell codierte Werte gemäß der JEITA-Spezifikation enthalten).

Eine unkomplizierte Open-Source-Bibliothek, die alle Standard-EXIF-Eigenschaften implementiert, finden Sie unter http://code.google.com/p/exif-utils/ Dies ist wahrscheinlich der einfachste Weg, dies zu tun. Siehe the simple included demo, die eine Datei einliest, alle EXIF-Eigenschaften ausgibt und dann dem Bild eine Eigenschaft hinzufügt.