Zum Inhalt springen

c# Image Aufnahmedatum ändern


Rekon1602

Empfohlene Beiträge

Lol das ist mir schon klar aber wie siehst du diese Information an einer Datei?

EDIT: Hab gerade gesehen das Windows das tatsächlich bei den Dateiinformationen anzeigt. War mir bisher noch nie aufgefallen.

Das dürfte wohl etwas aufwändiger werden, aber anscheinend gibt es in der shell32.dll die GetDetailsOf mit der du an den Wert dran kommst. Ich denke mal das es da auch eine Funktion zum ändern gibt

Bearbeitet von Guybrush Threepwood
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

wie der Chief schon sagte steht die Info die du ändern willst in den EXIF-Daten deines jeweiligen Bildes.

Du wirst im .NET keine Standartfunktion finden, mit der du diese Information ändern kannst.

Selbst um an die Daten heranzukommen wirst du entweder auf bereits von der Community verfasste Funktionen zurückgreifen müssen oder dich selbst darum kümmern müssen.

Hier ein beispiel um die EXIF Daten aus einem Bild auszulesen:

klick mich.

Laut Verfasser dieser C# Library kannst du damit folgenden Informationen aus einem Bild extrahieren:

///"Exif IFD"

/// "Gps IFD"

/// "New Subfile Type"

/// "Subfile Type"

/// "Image Width"

/// "Image Height"

/// "Bits Per Sample"

/// "Compression"

/// "Photometric Interp"

/// "Thresh Holding"

/// "Cell Width"

/// "Cell Height"

/// "Fill Order"

/// "Document Name"

/// "Image Description"

/// "Equip Make"

/// "Equip Model"

/// "Strip Offsets"

/// "Orientation"

/// "Samples PerPixel"

/// "Rows Per Strip"

/// "Strip Bytes Count"

/// "Min Sample Value"

/// "Max Sample Value"

/// "X Resolution"

/// "Y Resolution"

/// "Planar Config"

/// "Page Name"

/// "X Position"

/// "Y Position"

/// "Free Offset"

/// "Free Byte Counts"

/// "Gray Response Unit"

/// "Gray Response Curve"

/// "T4 Option"

/// "T6 Option"

/// "Resolution Unit"

/// "Page Number"

/// "Transfer Funcition"

/// "Software Used"

/// "Date Time"

/// "Artist"

/// "Host Computer"

/// "Predictor"

/// "White Point"

/// "Primary Chromaticities"

/// "ColorMap"

/// "Halftone Hints"

/// "Tile Width"

/// "Tile Length"

/// "Tile Offset"

/// "Tile ByteCounts"

/// "InkSet"

/// "Ink Names"

/// "Number Of Inks"

/// "Dot Range"

/// "Target Printer"

/// "Extra Samples"

/// "Sample Format"

/// "S Min Sample Value"

/// "S Max Sample Value"

/// "Transfer Range"

/// "JPEG Proc"

/// "JPEG InterFormat"

/// "JPEG InterLength"

/// "JPEG RestartInterval"

/// "JPEG LosslessPredictors"

/// "JPEG PointTransforms"

/// "JPEG QTables"

/// "JPEG DCTables"

/// "JPEG ACTables"

/// "YCbCr Coefficients"

/// "YCbCr Subsampling"

/// "YCbCr Positioning"

/// "REF Black White"

/// "ICC Profile"

/// "Gamma"

/// "ICC Profile Descriptor"

/// "SRGB RenderingIntent"

/// "Image Title"

/// "Copyright"

/// "Resolution X Unit"

/// "Resolution Y Unit"

/// "Resolution X LengthUnit"

/// "Resolution Y LengthUnit"

/// "Print Flags"

/// "Print Flags Version"

/// "Print Flags Crop"

/// "Print Flags Bleed Width"

/// "Print Flags Bleed Width Scale"

/// "Halftone LPI"

/// "Halftone LPIUnit"

/// "Halftone Degree"

/// "Halftone Shape"

/// "Halftone Misc"

/// "Halftone Screen"

/// "JPEG Quality"

/// "Grid Size"

/// "Thumbnail Format"

/// "Thumbnail Width"

/// "Thumbnail Height"

/// "Thumbnail ColorDepth"

/// "Thumbnail Planes"

/// "Thumbnail RawBytes"

/// "Thumbnail Size"

/// "Thumbnail CompressedSize"

/// "Color Transfer Function"

/// "Thumbnail Data"

/// "Thumbnail ImageWidth"

/// "Thumbnail ImageHeight"

/// "Thumbnail BitsPerSample"

/// "Thumbnail Compression"

/// "Thumbnail PhotometricInterp"

/// "Thumbnail ImageDescription"

/// "Thumbnail EquipMake"

/// "Thumbnail EquipModel"

/// "Thumbnail StripOffsets"

/// "Thumbnail Orientation"

/// "Thumbnail SamplesPerPixel"

/// "Thumbnail RowsPerStrip"

/// "Thumbnail StripBytesCount"

/// "Thumbnail ResolutionX"

/// "Thumbnail ResolutionY"

/// "Thumbnail PlanarConfig"

/// "Thumbnail ResolutionUnit"

/// "Thumbnail TransferFunction"

/// "Thumbnail SoftwareUsed"

/// "Thumbnail DateTime"

/// "Thumbnail Artist"

/// "Thumbnail WhitePoint"

/// "Thumbnail PrimaryChromaticities"

/// "Thumbnail YCbCrCoefficients"

/// "Thumbnail YCbCrSubsampling"

/// "Thumbnail YCbCrPositioning"

/// "Thumbnail RefBlackWhite"

/// "Thumbnail CopyRight"

/// "Luminance Table"

/// "Chrominance Table"

/// "Frame Delay"

/// "Loop Count"

/// "Pixel Unit"

/// "Pixel PerUnit X"

/// "Pixel PerUnit Y"

/// "Palette Histogram"

/// "Exposure Time"

/// "F-Number"

/// "Exposure Prog"

/// "Spectral Sense"

/// "ISO Speed"

/// "OECF"

/// "Ver"

/// "DTOrig"

/// "DTDigitized"

/// "CompConfig"

/// "CompBPP"

/// "Shutter Speed"

/// "Aperture"

/// "Brightness"

/// "Exposure Bias"

/// "MaxAperture"

/// "SubjectDist"

/// "Metering Mode"

/// "LightSource"

/// "Flash"

/// "FocalLength"

/// "Maker Note"

/// "User Comment"

/// "DTSubsec"

/// "DTOrigSS"

/// "DTDigSS"

/// "FPXVer"

/// "ColorSpace"

/// "PixXDim"

/// "PixYDim"

/// "RelatedWav"

/// "Interop"

/// "FlashEnergy"

/// "SpatialFR"

/// "FocalXRes"

/// "FocalYRes"

/// "FocalResUnit"

/// "Subject Loc"

/// "Exposure Index"

/// "Sensing Method"

/// "FileSource"

/// "SceneType"

Schau dir an wie er das macht und wo die Daten genau stehen, dann kannst du dir ja eine zusätzliche Funktion schreiben die die entsprechenden Daten ändert.

lg

Gateway

Link zu diesem Kommentar
Auf anderen Seiten teilen

So, wenn die Property vorhanden ist, dann kann ich sie lesen und auch ändern.

Nun wenn ich aber ein "normales" bild (z.B. von einer Webcam) habe, des nicht über ein Aufnahmedatum verfügt, funktioniert das nicht.

Kennt zufällig jemand eine möglichkeit ein neues PropertyItem hinzuzufügen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du wirst im .NET keine Standartfunktion finden, mit der du diese Information ändern kannst.

Selbst um an die Daten heranzukommen wirst du entweder auf bereits von der Community verfasste Funktionen zurückgreifen müssen oder dich selbst darum kümmern müssen.

Das dürfte wohl etwas aufwändiger werden, aber anscheinend gibt es in der shell32.dll die GetDetailsOf mit der du an den Wert dran kommst.

Nunja, dass ist so nicht ganz richtig. Das .Net Framework bietet eine Fülle an Möglichkeiten, so auch für diesen Fall:


Image theImage = new Bitmap(@"c:\test.jpg");


// Get the PropertyItems property from image.

PropertyItem[] propItems = theImage.PropertyItems;


Die PropertyItems enthalten alles was man braucht. Eine Liste mit den möglichen Werten gibt es hier: Property Tags in Numerical Order (Windows) Und zum Setzen von nicht vorhandenen Properties gibt es folgendes:

// Get a PropertyItem

PropertyItem propItem = theImage.GetPropertyItem(20624);


// update

propItem.Value = irgendein Wert;


theImage.SetPropertyItem(propItem);

Hier muss man beachten, dass es keinen public Konstruktor für ein PropertyItem gibt. D.h. man nehme ein existierendes (weil vorher ausgelesen), ändere den Wert und schreibe es zurück.

Etwaige Unklarheiten löst die MSDN auf:-)

Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nein.

Es gibt zwei Möglichkeiten:

1. Du nimmst ein PropertyItem wie das Aufnahmedatum, änderst einfach den Wert (PropertyItem.Value) und schreibst es zurück

2. Du nimmst ein PropertyItem änderst den Wert (PropertyItem.Value) und die Id (PropertyItem.Id) und schreibst es zurück. Damit bleibt das urspüngliche erhalten und das neue wird hinzugefügt.

Damit sollten alle deinen Anforderungen erfüllt sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...