Benutzer mit den meisten Antworten
Meta Daten aus Bilddatei auslesen

Frage
-
Hallo zusammen,
Ich will aus einer Bilddatei die Meta Daten auslesen, bisher leider ohne erfolg.
auf der Bord eigenen Suche habe ich diesen thread gefunden: LINKLeider sind die Links darin nicht mehr aktuell und führen ins nirgendwo.
auf google habe ich auch etwas gefunden z.B:
Function Get-FileMetaData { Param([string[]]$folder) foreach($sFolder in $folder) { $a = 0 $objShell = New-Object -ComObject Shell.Application $objFolder = $objShell.namespace($sFolder) foreach ($File in $objFolder.items()) { $FileMetaData = New-Object PSOBJECT for ($a ; $a -le 266; $a++) { if($objFolder.getDetailsOf($File, $a)) { $hash += @{$($objFolder.getDetailsOf($objFolder.items, $a)) = $($objFolder.getDetailsOf($File, $a)) } $FileMetaData | Add-Member $hash $hash.clear() } #end if } #end for $a=0 $FileMetaData } #end foreach $file } #end foreach $sfolder } #end Get-FileMetaData
Aber leider funktioniert diese Funktion auch nicht.
Es muss doch möglich sein an die Information heranzukommen?
Vielen Dank im voraus!
Antworten
-
OK, abhängig davon, wieviele verschiedene Werte Du extrahieren möchtest, könnte es ein wenig aufwändiger werden, aber als Beispiel hier nur mal der eine Wert:
Wenn Du die Ausgabe des Exiftools in die Variable $out geschrieben hast, dann kannst Du mit folgendem Regulären Ausdruck nach dem 'Light Value' fischen:
$out -match 'Light\s+Value\s+:\s+(\d+\.\d+)'
... und Dein Wert steht dann in$Matches[1]
... isses das ungefähr?
Grüße - Best regards
PS:> (79,108,97,102|%{[char]$_})-join''- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 12. September 2016 11:48
- Tag als Antwort aufgehoben Denniver ReiningMVP, Moderator Montag, 12. September 2016 11:49
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 12. September 2016 11:50
Alle Antworten
-
Danke für dieses Tool. Funktioniert soweit auch einwandfrei.
ich müsste die Daten aber irgendwie in einem Object drin haben, da ich versuche Bilder umzubenennen mit den hinterlegten Koordinaten.
soweit ich das verstanden habe gibt mir exiftool "nur" eine liste aus. -
Die Dateien 'fängst' Du mit einem Get-ChildItem ein und 'beackern' kannst Du sie dann in einer Foreach Schleife. Etwas Ähnliches hattest Du in Deinem Script ja schon drin. Dateien umbenennen kannst Du mit Rename-Item.
Wenn Du Hilfe zu den einzelnen cmdlets brauchst, kannst Du Dir mit Get-Help <cmdlet> -Full eine ziemlich umfangreiche Hilfe angucken, die auch Beispiele mitliefert. Nur die Beispiele bekommst Du mit Get-Help <cmdlet> -Examples
- Bearbeitet BOfH-666 Freitag, 9. September 2016 11:28
-
Olaf, kannst du bitte Code, der nichts mit dem Post zu tun hat, in die Signatur verschieben? Die meisten Anfänger dürften nicht checken das das ne Unterschrift ist. Danke.
Übrigens ist die auch kaputt, da statt zwei Single-Quotes ein einzelnes Double-Quote da steht. :)Grüße, Denniver
Blog: http://bytecookie.wordpress.com
Neu: Powershell Code Manager v5 ! Link
(Schneller, besser + komfortabler scripten.)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.
-
Vielen dank,
habe mich wahrscheinlich ein bisschen undeutlich ausgedrückt. meine Frage war wie bekomme ich den wert eines Feldes in eine variable? exiftool gibt mir eine "dumme" liste zurück.
Beispiel: Lichtwert : 6.6 wie bekomme ich nun den wert (6.6) in eine variable?- Bearbeitet Pin-Lui Freitag, 9. September 2016 13:19
-
Hmmm ... jetzt hast Du mich erwischt ... ich hab selber noch nie damit gearbeitet. ;-)
Ich hoffe mal, Get-Help about_Variables hast Du Dir schon angeguckt. Wenn das Exiftool jetzt keine Option hat, die nur einen einzigen Wert ausgibt, den Du einer entsprechenden Variable zuweisen kannst, musst Du den Output des Tools erstmal komplett in eine Variable speichern und dann mit Stringoperationen (Get-Help about_Split) oder mit Regulären Ausdrücken auftrennen und dann einer Variablen zuweisen.
Wie sieht der Output vom exiftool aus?
Grüße - Best regards
PS:> (79,108,97,102|%{[char]$_})-join'' -
naja das mit dem einlesen und splitten will ich eigentlich vermeiden, ganz schön aufwendig für so ein kleines Script:)
die Ausgabe eines beispiel Bildes sieht so aus:
---- ExifTool ---- ExifTool Version Number : 10.25 ---- System ---- File Name : 1.jpg Directory : C:/ File Size : 1555 kB File Modification Date/Time : 2016:04:01 09:06:38+02:00 File Access Date/Time : 2016:09:08 16:21:27+02:00 File Creation Date/Time : 2016:09:08 16:21:27+02:00 File Permissions : rw-rw-rw- ---- File ---- File Type : JPEG File Type Extension : jpg MIME Type : image/jpeg Exif Byte Order : Big-endian (Motorola, MM) Image Width : 3264 Image Height : 2448 Encoding Process : Baseline DCT, Huffman coding Bits Per Sample : 8 Color Components : 3 Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2) ---- IFD0 ---- Make : Apple Camera Model Name : iPhone 6 Plus Orientation : Horizontal (normal) X Resolution : 72 Y Resolution : 72 Resolution Unit : inches Software : 9.2.1 Modify Date : 2016:04:01 08:22:21 Y Cb Cr Positioning : Centered ---- ExifIFD ---- Exposure Time : 1/33 F Number : 2.2 Exposure Program : Program AE ISO : 160 Exif Version : 0221 Date/Time Original : 2016:04:01 08:22:21 Create Date : 2016:04:01 08:22:21 Components Configuration : Y, Cb, Cr, - Shutter Speed Value : 1/33 Aperture Value : 2.2 Brightness Value : 2.031811185 Exposure Compensation : 0 Metering Mode : Multi-segment Flash : Off, Did not fire Focal Length : 4.2 mm Subject Area : 1631 1223 1795 1077 Sub Sec Time Original : 680 Sub Sec Time Digitized : 680 Flashpix Version : 0100 Color Space : sRGB Exif Image Width : 3264 Exif Image Height : 2448 Sensing Method : One-chip color area Scene Type : Directly photographed Exposure Mode : Auto White Balance : Auto Focal Length In 35mm Format : 29 mm Scene Capture Type : Standard Lens Info : 4.15mm f/2.2 Lens Make : Apple Lens Model : iPhone 6 Plus back camera 4.15mm f/2.2 ---- Apple ---- Apple 0x0001 : 4 Apple 0x0002 : bplist00O..æñï×Õ›1,'!..,FTLÝáÞÀÀ”[...] Run Time Flags : Valid Run Time Value : 219526556464541 Run Time Epoch : 0 Run Time Scale : 1000000000 Apple 0x0004 : 1 Apple 0x0005 : 169 Apple 0x0006 : 163 Apple 0x0007 : 1 Apple 0x0008 : -0.8065927655 0.05839030766 -0.5486097795 Apple 0x0009 : 275 Apple 0x000c : 0.29296875 0.41796875 Apple 0x000d : 0 Apple 0x000e : 12 Apple 0x000f : 3 Apple 0x0010 : 1 Apple 0x0014 : 4 ---- GPS ---- GPS Latitude Ref : North GPS Latitude : 47 deg 34' 50.85" GPS Longitude Ref : East GPS Longitude : 9 deg 20' 49.15" GPS Altitude Ref : Above Sea Level GPS Altitude : 421.7736486 m GPS Time Stamp : 06:22:21.14 GPS Speed Ref : km/h GPS Speed : 0.59 GPS Img Direction Ref : True North GPS Img Direction : 239.8489583 GPS Dest Bearing Ref : True North GPS Dest Bearing : 239.8489583 GPS Date Stamp : 2016:04:01 GPS Horizontal Positioning Error: 10 m ---- IFD1 ---- Compression : JPEG (old-style) X Resolution : 72 Y Resolution : 72 Resolution Unit : inches Thumbnail Offset : 2098 Thumbnail Length : 8158 ---- Composite ---- Aperture : 2.2 GPS Altitude : 421.7 m Above Sea Level GPS Date/Time : 2016:04:01 06:22:21.14Z GPS Latitude : 47 deg 34' 50.85" N GPS Longitude : 9 deg 20' 49.15" E GPS Position : 47 deg 34' 50.85" N, 9 deg 20' 49.15" E Image Size : 3264x2448 Megapixels : 8.0 Run Time Since Power Up : 2 days 12:58:46 Scale Factor To 35 mm Equivalent: 7.0 Shutter Speed : 1/33 Create Date : 2016:04:01 08:22:21.680 Date/Time Original : 2016:04:01 08:22:21.680 Thumbnail Image : (Binary data 8158 bytes, use -b option to extract) Circle Of Confusion : 0.004 mm Field Of View : 63.7 deg Focal Length : 4.2 mm (35 mm equivalent: 29.0 mm) Hyperfocal Distance : 1.82 m Light Value : 6.6
(krass was alles so hinterlegt ist in einem jpg)
- Bearbeitet Pin-Lui Freitag, 9. September 2016 14:01
-
OK, abhängig davon, wieviele verschiedene Werte Du extrahieren möchtest, könnte es ein wenig aufwändiger werden, aber als Beispiel hier nur mal der eine Wert:
Wenn Du die Ausgabe des Exiftools in die Variable $out geschrieben hast, dann kannst Du mit folgendem Regulären Ausdruck nach dem 'Light Value' fischen:
$out -match 'Light\s+Value\s+:\s+(\d+\.\d+)'
... und Dein Wert steht dann in$Matches[1]
... isses das ungefähr?
Grüße - Best regards
PS:> (79,108,97,102|%{[char]$_})-join''- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 12. September 2016 11:48
- Tag als Antwort aufgehoben Denniver ReiningMVP, Moderator Montag, 12. September 2016 11:49
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 12. September 2016 11:50
-
Eine Frage hätte ich da noch,
Mein Script das den GPS Time stamp ausliest und das File renamed sieht so aus:$FilePath = "C:\1.jpg" $cmdOutput = &"C:\exiftool.exe" $FilePath | Out-String # Write-Output = $cmdOutput $cmdOutput -match 'GPS\s+Date\s+Stamp\s+:\s+(\d+\:\d+\:\d+)' $NewFileName = $Matches[1].Replace(":","_") # out-file C:\1.txt -InputObject $NewFileName Rename-Item $FilePath $NewFileName
Das Problem ist logischerweise überschreibt er den ganzen Datei Namen, also auch *.JPEG
wie kann ich die Datei Endung "konservieren"? hardcoden möchte ich sie nicht da es ja nicht umbedingt ein JPEG sein muss.
- Bearbeitet Pin-Lui Dienstag, 13. September 2016 08:57
-
Es ist übrigens keine Schande, gelegentlich mal die Google-Suche zu bemühen! ;-)
Naja ohne google wäre ich wohl nie auf die Lösung gekommen die ich oben geposted habe, deine Antworten haben mich in die richtige Richtung gelenkt. auch mit dem hier:
Get-Item -Path $FilePath | select -ExpandProperty Extension
weiss ich überhaupt nicht was ich anfangen soll. aber google wird es schon richten ^^
Danke für die Hilfe
Pin
- Bearbeitet Pin-Lui Dienstag, 13. September 2016 09:50
-
Pin-Lui,
Du hattest gefragt, wie Du die Dateiendung konservieren kannst. Der Code-Schnipsel
Get-Item -Path $FilePath | select -ExpandProperty Extension
gibt Dir die Endung der Datei aus, deren Pfad in der Variablen $FilePath gespeichert ist. Wenn Du also vorm Umbenennen die Dateiendung in einer weiteren Variablen zwischenspeicherst, kannst Du sie beim Umbenennen hinten anhängen.
Der komplette Code wär dann das hier:
$FilePath = "C:\1.jpg" $DateiEndung = Get-Item -Path $FilePath | select -ExpandProperty Extension $cmdOutput = &"C:\exiftool.exe" $FilePath | Out-String # Write-Output = $cmdOutput $cmdOutput -match 'GPS\s+Date\s+Stamp\s+:\s+(\d+\:\d+\:\d+)' $NewFileName = $Matches[1].Replace(":","_") + $DateiEndung # out-file C:\1.txt -InputObject $NewFileName Rename-Item $FilePath $NewFileName
... müsste eigentlich passen ... ;-)Grüße - Best regards
PS:> (79,108,97,102|%{[char]$_})-join''