Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Bildorientierung in den Exif-Daten von Fotos beim Betrachten mit IrfanView dauerhaft korrigieren

Anleitung Multimedia Grafik

Mitglied: Friemler

Friemler (Level 2) - Jetzt verbinden

14.10.2014, aktualisiert 27.10.2014, 7108 Aufrufe, 1 Kommentar, 2 Danke

Vielleicht kennt Ihr das Problem: Aus irgendeinem Grund hat Eure Kamera bei einer Hochkantaufnahme nicht erkannt, dass sie um 90° gedreht gehalten wurde und deshalb die entsprechende Information (den sog. Exif:Orientation-Tag) in der Bilddatei falsch gesetzt, wodurch später der Bildbetrachter am PC das Foto im normalen Querformat anzeigt. Statt sich beim Ansehen den Hals zu verrenken oder das Bild nur temporär per Rotate-Funktion zu drehen, wäre es doch eine feine Sache, die notwendige Information per Tastendruck dauerhaft in der Datei zu speichern und die geänderte Bilddatei danach neu zu laden.

Programme zu finden, mit denen sich der Exif:Orientation-Tag ändern lässt, ist zwar kein Problem, aber es ist doch etwas umständlich und störend, während einer Fotovorführung oder auch bei der vorbereitenden Sichtung der Bilder zwischen zwei Programmen zu wechseln. Es muss also eine Lösung her, mit der sich das ganze "so nebenbei" aus dem Bildbetrachter heraus erledigen lässt.

Mein Lieblings-Bildbetrachter ist schon seit Jahren IrfanView von Irfan Skiljan. Das Programm bietet die Möglichkeit, das gerade geladene Bild per Tastenkombination in einem anderen Programm zu öffnen.
=> Es existiert eine einfach anzusprechende Schnittstelle, um ein externes Hilfsprogramm aufzurufen.

Natürlich soll das Schreiben der Exif-Daten automatisch und unsichtbar erfolgen, man will ja nicht irgendein aufpoppendes Programm wieder manuell schließen müssen. Das lässt sich am einfachsten mit Konsolenprogrammen erreichen. Außerdem ist DAS Tool zum Schreiben und Lesen der Metadaten von sehr vielen Dateiformaten sowieso ein Konsolenprogramm.
=> ExifTool von Phil Harvey

Damit IrfanView die geänderte Bilddatei automatisch neu lädt, muss man etwas tiefer in die Trickkiste greifen. Man muss das Fenster suchen, in dessen Titelzeile der Dateiname des Bildes enthalten ist (das sollte das IrfanView-Fenster sein). Diesem Fenster schickt man dann die Windows-Botschaften, die es auch erhalten würde, wenn der Benutzer die Tastenkombination SHIFT+R für den Bild-Reload eingibt.
=> Beide Funktionen lassen sich zusammen in 4 Zeilen mit Hilfe des Tools NirCmd von Nir Sofer kodieren.

Grundlegende Informationen zu Exif finden sich übrigens hier.

Schritt für Schritt

Nur um es nochmal klarzustellen: Die eigentlichen Grafikdaten werden bei der hier geschilderten Methode NICHT verändert, es kommt also nicht zu Qualitätseinbußen, wie sie gerade bei JPEG-Bildern auftreten, wenn sie "wirklich" gedreht und neu geschrieben werden. Es wird lediglich eine Steuerinformation geändert, die von Bildbetrachtern ausgewertet wird und von der Kamera in die Bilddatei eingetragen wurde - leider manchmal mit dem falschen Wert.

1. Zuerst muss man sich natürlich über die obigen Links die benötigten Programme herunterladen, die alle kostenlos sind. Wer IrfanView schon installiert hat, muss auf die Version 4.38 oder höher updaten und kann dann bei 3. weiterlesen.

2. Der Nutzen von IrfanView wird beträchtlich erhöht, wenn man die dafür erhältlichen Plugins installiert. Dadurch lassen sich viel mehr Bildformate öffnen und das Programm wird um einige Funktionen erweitert. Die Plugins sind auch über die oben verlinkte Seite von IrfanView zu beziehen. Am einfachsten ist die Installation, wenn man auf der Downloadseite das Setup-Programm auswählt. Wer alternativ die Verwendung der 4 separaten ZIP-Dateien bevorzugt, muss den entpackten Inhalt selbst an die richtige Stelle kopieren. Hilfe dazu findet man in ReadMe-Dateien, die in den ZIP-Archiven enthalten sind.

3. Das Programm ExifTool kann nur in Form eines ZIP-Archivs heruntergeladen und muss nicht installiert werden. Es ist darauf zu achten, dass man die Windows-Version des Tools für den Download auswählt. Nach dem Entpacken des Archivs muss die extrahierte Datei exiftool(-k).exe in exiftool.exe umbenannt werden.

4. Auch NirCmd kann nur als ZIP-Datei heruntergeladen und muss ebenfalls nicht installiert werden. Es ist eine 32Bit- und eine 64Bit-Version erhältlich. Die Downloadlinks finden sich auf der oben verlinken Seite ganz am Ende des Textes. Das Archiv enthält eine Hilfe-Datei und zwei Versionen von NirCmd. Für unsere Zwecke wird nur die Datei nircmdc.exe benötigt.

5. Jetzt erstellt man ein Verzeichnis auf der Festplatte, in das man die exiftool.exe und die nircmdc.exe kopiert oder verschiebt. Das könnte man z.B. unterhalb des Installationsverzeichnissis von IrfanView tun, etwa
C:\Program Files\IrfanView\Plugins\SetExifOrientation
bei einem 32Bit-Windows und
C:\Program Files (x86)\IrfanView\Plugins\SetExifOrientation
bei einem 64Bit-Windows. An diesem Erstellungsort werden seit Vista allerdings Administratorrechte benötigt, auch für das Anlegen der in Punkt 6. genannten Scriptdateien.

6. Jetzt brauchen wir noch ein bisschen "Intelligenz" in Form von zwei Scripten, die die Fähigkeiten von IrfanView, ExifTool und NirCmd in geeigneter Weise miteinander kombinieren. Dazu legt man in dem Verzeichnis aus Punkt 5 zwei neue Dateien an, die man mit dem nachfolgenden Code füllt:

Den folgenden VBScript-Code kann man in einer Textdatei mit beliebigem Namen speichern, nur der Dateityp muss vbs sein. Mein Vorschlag: SetExifOrientation.vbs
01.
Option Explicit 
02.
 
03.
 
04.
Const ExifToolFileName      = "exiftool.exe" 
05.
Const IrfanViewReloadScript = "IrfanViewReloadImage.cmd" 
06.
 
07.
Dim objFSO, objShell 
08.
Dim strOrientation, intOrientation, strImageFile, strWindowTitle 
09.
Dim strOwnPath, strExifToolPath, strScriptPath, strCommand 
10.
 
11.
If WScript.Arguments.Count > 1 Then 
12.
  Set objFSO      = WScript.CreateObject("Scripting.FileSystemObject") 
13.
  Set objShell    = WScript.CreateObject("WScript.Shell") 
14.
 
15.
  strOrientation  = WScript.Arguments(0) 
16.
  strImageFile    = WScript.Arguments(1) 
17.
  strOwnPath      = objFSO.GetParentFolderName(WScript.ScriptFullName) 
18.
  strExifToolPath = objFSO.BuildPath(strOwnPath, ExifToolFileName) 
19.
  strExifToolPath = """" & strExifToolPath & """" 
20.
  strWindowTitle  = strImageFile 
21.
 
22.
  Select Case UCase(strOrientation) 
23.
    Case "ROTATE90CW":  intOrientation = 6 
24.
    Case "ROTATE270CW": intOrientation = 8 
25.
    Case "NORMAL":      intOrientation = 1 
26.
    Case Else           WScript.Quit 
27.
  End Select 
28.
   
29.
  strCommand = strExifToolPath & " -P -Exif:Orientation#=" & intOrientation & " """ & strImageFile & """" 
30.
   
31.
  If objShell.Run(strCommand, 0, True) = 0 Then 
32.
    strCommand = strExifToolPath & " -delete_original! """ & strImageFile & """" 
33.
    objShell.Run strCommand, 0, False 
34.
 
35.
    strScriptPath = objFSO.BuildPath(strOwnPath, IrfanViewReloadScript) 
36.
    strCommand = "cmd.exe /c """"" & strScriptPath & """ """ & strWindowTitle & """""" 
37.
    objShell.Run strCommand, 0, False 
38.
  Else 
39.
    strCommand = strExifToolPath & " -restore_original """ & strImageFile & """" 
40.
    objShell.Run strCommand, 0, False 
41.
  End If 
42.
End If
Den folgenden Batchscript-Code muss man in einer Textdatei mit dem Namen IrfanViewReloadImage.cmd speichern. Wem das nicht gefällt, der muss im obigen VBScript den Wert der Konstante in Zeile 5 nach seinen Wünschen anpassen. Der Dateityp muss auf jeden Fall cmd sein.
01.
:: ********************************************************** 
02.
:: Dieses Script schickt an das Fenster, dessen Titelzeile 
03.
:: den im Parameter %1 übergebenen String enthält, Messages  
04.
:: vom Typ WM_KEYDOWN und WM_KEYUP mit den Scancodes für die 
05.
:: Tastenkombination SHIFT+R. 
06.
:: Wenn das gefundene Fenster zu IrfanView gehört, wird das 
07.
:: gerade angezeigte Bild erneut von der Festplatte geladen. 
08.
:: ********************************************************** 
09.
 
10.
@echo off & setlocal 
11.
 
12.
cd /d "%~dp0" 
13.
 
14.
if "%~1" neq "" if exist "%~1" ( 
15.
  nircmdc win postmsg ititle "%~1" 0x0100 0x0010 0x002A0001 
16.
  nircmdc win postmsg ititle "%~1" 0x0100 0x0052 0x00130001 
17.
  nircmdc win postmsg ititle "%~1" 0x0101 0x0052 0xC0130001 
18.
  nircmdc win postmsg ititle "%~1" 0x0101 0x0010 0xC02A0001 
19.
)
7. Jetzt navigiert man zum Verzeichnis
C:\Users\<Benutzername>\AppData\Roaming\IrfanView
und lädt die dort befindliche Konfigurationsdatei von IrfanView i_view32.ini in einen Texteditor. Es handelt sich hierbei um eine Datei im sog. INI-Dateiformat, die durch Zeilen wie
[JPEG]
in Abschnitte unterteilt ist. Ein Abschnitt besteht aus solch einer Kopfzeile und den darauf folgenden Zeilen, die Schlüssel-Wert-Paare enthalten, wie z.B.
ExifRotate=1
und endet vor der Kopfzeile des nächsten Abschnitts.

8. Als erstes muss sichergestellt sein, dass im Abschnitt [JPEG] beim Schlüssel ExifRotate so wie oben eine 1 eingetragen ist. Durch diese Einstellung wird IrfanView dazu veranlasst, bei der Anzeige von JPEG-Bildern das Exif:Orientation-Tag zu berücksichtigen.

9. Als nächstes muss überprüft werden, ob im Abschnitt Others beim Schlüssel ShowFullPath als Wert eine 1 eingetragen ist. Diese Einstellung bewirkt, dass IrfanView den vollen Dateipfad des gerade geladenen Bildes in der Titelzeile seines Fensters anzeigt. Das ist erforderlich, damit NirCmd das Fenster finden und ihm die Botschaften senden kann, durch die das Drücken und Loslassen der Tasten SHIFT und R simuliert wird.

10. Zu guter Letzt müssen im Abschnitt Others die Schlüssel ExternalViewer (ohne Wert), ExternalViewer2 (ohne Wert) und ExternalViewer3 (der Pfad zur IrfanView-Programmdatei i_view32.exe) gesucht werden. Unter der Zeile mit dem Schlüssel ExternalViewer3 legt man nun drei neue Zeilen mit den Schlüsseln ExternalViewer4, ExternalViewer5 und ExternalViewer6 an, denen man die folgenden Werte zuweist:
01.
ExternalViewer4=C:\Program Files\IrfanView\Plugins\SetExifOrientation\SetExifOrientation.vbs ""Rotate90CW" "%1"" 
02.
ExternalViewer5=C:\Program Files\IrfanView\Plugins\SetExifOrientation\SetExifOrientation.vbs ""Rotate270CW" "%1"" 
03.
ExternalViewer6=C:\Program Files\IrfanView\Plugins\SetExifOrientation\SetExifOrientation.vbs ""Normal" "%1""
Bei einem 64Bit-Windows muss Program Files natürlich wieder gegen Program Files (x86) ausgetauscht werden. Die Pfade bestehen aus dem in Schritt 5. angelegten Verzeichnis und der in Schritt 6. angelegten vbs-Datei. Durch diese Einträge kann man in IrfanView mit der Tastenkombination SHIFT+4 das gerade geladene Bild um 90° im Uhrzeigersinn drehen, SHIFT+5 dreht um 90° gegen den Uhrzeigersinn und SHIFT+6 deaktiviert die automatische Drehung - das Bild wird im Querformat geladen.

11. Jetzt muss die Datei i_view32.ini nur noch gespeichert werden. Danach kann man IrfanView starten und testen ob alles funktioniert.


Viel Spass damit!


Gruß
Friemler
Mitglied: colinardo
15.10.2014, aktualisiert um 09:11 Uhr
@Friemler: Mal wieder eine sehr schöne Anleitung

Weiter so!

Viele Grüße
Uwe
Bitte warten ..
Ähnliche Inhalte
Windows 10
Get Windows 10 App dauerhaft entfernen (KB3035583)
Anleitung von FrankWindows 1045 Kommentare

Einige User haben mich gefragt, wie man denn die "Get Windows 10"-App dauerhaft wieder vom Rechner entfernt. Mit Hilfe ...

Soziale Netzwerke
Facebook muss Daten von Whats App löschen
Information von brammerSoziale Netzwerke11 Kommentare

Hallo, der Hamburger Datenschutzbeauftragte Johannes Casper hat per Anordnung die Nutzung von Daten die von Whats App an Facebook ...

PHP
Ein einfaches Tortendiagramm in 3D mit Daten aus einer MySQLtabelle
Anleitung von GuenniPHP

Warum einfach? Weil das Skript keinen 1000- und mehrzeiligen Code enthält, wie bei einer professionellen Anwendung, und die Funktionalität ...

Windows 8
EasyTransfer von 8.1 überträgt keine XP Daten
Anleitung von compispeziWindows 83 Kommentare

Hallo Leute. Manchmal denke ich, in Redmond gibt es eine Abteilung die es darauf abgesehen hat uns Admins den ...

Neue Wissensbeiträge
Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 7 StundenLinux12 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 1 TagHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 2 TagenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Heiß diskutierte Inhalte
Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Windows 10
Alle Programme mit bestimmtem Namen automatisch (per GPO) deinstallieren
gelöst Frage von lordofremixesWindows 1012 Kommentare

Hallo zusammen, gibt es eine Möglichkeit, alle Programme beginnend mit z.B. "Dell" im Namen per Script und somit per ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux12 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...