• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Exif-Tool mit GUI

hallo community,

ich suche für openSuSE Leap 42.1
ein EXIF-Tool mit grafischer Oberfläche. ;)
Da ich viel semiprofessionell fotografiere, benötige ich ein Tool mit grafischer Oberfläche,
um ggf. einige Parameter aus dem EXIF-File zu editieren.

Ich würde mich über einen Tipp von Euch sehr freuen.

viele grüüse aus dem morgendlichen Oberbayern
vom bayernherz :thumbs:
 
OP
B

bayernherz

Hacker
hallo community,

Danke für eueren Hinweis. :wink:
Ich habe mir das ein wenig angesehen.

Wie verträgt sich
http://hvdwolf.github.io/pyExifToolGUI/
das mit openSuSE Leap 42.1 und wie vertraulich ist diese Quelle.
Ich kann es leider nicht beurteilen! :-?

Wie ich gelesen habe ist eine GUI für EXIF eine Rarität.
Meine Aufgabenstellung ist im Abschnitt EXIF den Eintrag Fotograf zu editieren.
Dieses ist aus Copyright Gründen notwendig.
Ein zusätzlichen Eintrag im Abschnitt IPTC-IIM ist auch mit XnView MP leicht möglich.
Allerdings taucht dann der Eintrag Fotograf/Autor im Abschnitt EXIF u. IPTC mit widersprüchlichen Angaben auf.


Würde mich über eine Antwort von Euch sehr freuen.

viele grüsse aus den nachmittaglichen Oberbayern
vom bayernherz :thumbs:
 

abgdf

Guru
bayernherz schrieb:
Wie verträgt sich
http://hvdwolf.github.io/pyExifToolGUI/
das mit openSuSE Leap 42.1 und wie vertraulich ist diese Quelle.
Ich kann es leider nicht beurteilen! :-?
Also, auf der Seite steht, pyExifToolGUI sei ein Python-Programm für Qt4 (mit pySide). Geht denn Qt4 mit Leap 42.1?
Oh:
[url=http://linux-club.de/forum/viewtopic.php?t=121034#p772350 schrieb:
revealed[/url]"]Zu: "Rückinstallation auf Qt4" ?
Wenn du OpenSUSE Leap 42.1 hast, kannst du das vergessen. KDE4 ist nicht vorgesehen dafür.
Dann geht das wohl nicht.

Ein Python-GUI für exiftool, das in Perl ist, ist sowieso eine eigenartige Idee. Hätte man dann wohl besser auch in Perl geschrieben.

Hier wird noch auf ein Programm ExifToolGUI hingewiesen:
http://quergedacht20.square7.ch/?p=1147
Windows-exe, Quellen wohl nicht offen. :(

Muß es denn GUI sein? Mit exiftool oder dem Perl-Modul "Image::ExifTool" sollte man doch eigentlich auch zurechtkommen.
Wenn Du mir sagst, was Du genau willst (und mir ggf. ein/zwei Beispielbilder zum Testen mailst), könnte ich Dir wahrscheinlich ein Perl-Skript dafür zusammenstellen.
 

marce

Guru
Doofe Frage - kann das nicht eigentlich jedes Bildbearbeitungsprogramm (z.B. Gimp) oder Bildverwaltungsprogramm von sich aus? Selbst die meisten reinen Bildbetrachter bieten die entsprechende Option, wenn die exif-libs installiert sind...

... hier geht's zumindest problemlos, aber (1) kein OpenSuse, (2) nicht in den Tiefen Bayerns.
 

abgdf

Guru
marce schrieb:
Doofe Frage - kann das nicht eigentlich jedes Bildbearbeitungsprogramm (z.B. Gimp) oder Bildverwaltungsprogramm von sich aus? Selbst die meisten reinen Bildbetrachter bieten die entsprechende Option, wenn die exif-libs installiert sind...
Vielleicht geht es ja um eine typische Skript-Anwendung, also das automatisierte Verändern von Hunderten von Dateien oder so.
 
OP
B

bayernherz

Hacker
haool community,

marce hat geschrieben:
Selbst die meisten reinen Bildbetrachter bieten die entsprechende Option, wenn die exif-libs installiert sind...
Ja, das ist mit bekannt, habe ich ja oben auch mal geschrieben.
Aber leider kann nur der Abschnitt IPTC-IIM ergänzt oder geändert werden.
Und GIMP speichert immer das ganze Image. Da leider bei jedem speichern die Bildqualität durch neue
Kompremierung des JPGs verschlechert wird. ist dies kein Thema. :igitt:
Wie ich zuvor schon geschrieben habe, muss ich den Bildautor im EXIF, welches die Kamera erzeugt hat,
ändern.
abgdf hat geschrieben:
Muß es denn GUI sein?
Ja, es sollte schon GUI sein, anderenfalls muss ich mir selbst eine GUI mit Qt C++ schreiben.
Mit einem Komandozeilenprogrann ist es einfach zu umständlich.

viele grüsse aus dem morgendlichen oberbayern
vom bayernherz :thumbs:
 

abgdf

Guru
bayernherz schrieb:
Ja, es sollte schon GUI sein, anderenfalls muss ich mir selbst eine GUI mit Qt C++ schreiben.
Mit einem Komandozeilenprogrann ist es einfach zu umständlich.
:???:

Komandozeilenprogramm -> 20 Zeilen Code
Perl-Skript -> 50 Zeilen Code
GUI-Benutzung -> 200 Klicks
C++-Anwendung schreiben -> 2.000 Zeilen Code

Bei mir (OpenSuSE 13.1) läuft auch pyExifToolGui problemlos (sogar ohne Installation).
dg924o4t6vvl150y2.png

Vielleicht war der "Große Sprung nach vorn" doch nicht so toll. Wäre nicht das erste Mal. ;)
Und übrigens: Wenn ich
Code:
exiftool 180px-Konqui.png
auf der Konsole ausführe, erhalte ich:
Code:
ExifTool Version Number         : 9.34
File Name                       : 180px-Konqui.png
Directory                       : .
File Size                       : 47 kB
File Modification Date/Time     : 2017:01:29 13:10:51+01:00
File Access Date/Time           : 2017:01:29 13:11:31+01:00
File Inode Change Date/Time     : 2017:01:29 13:10:52+01:00
File Permissions                : rw-r--r--
File Type                       : PNG
MIME Type                       : image/png
Image Width                     : 180
Image Height                    : 212
Bit Depth                       : 8
Color Type                      : RGB with Alpha
Compression                     : Deflate/Inflate
Filter                          : Adaptive
Interlace                       : Noninterlaced
Image Size                      : 180x212
Das ist genau dasselbe. Deshalb hat der Autor von exiftool auch kein GUI zu seinem Programm geschrieben. Es ist einfach überflüssig.
 
OP
B

bayernherz

Hacker
hallo community,

abgdf hat geschrieben:
Bei mir (OpenSuSE 13.1) läuft auch pyExifToolGui problemlos (sogar ohne Installation).
wie Du ja selbst geschrieben hasst:
abgdf hat geschrieben:
Also, auf der Seite steht, pyExifToolGUI sei ein Python-Programm für Qt4 (mit pySide). Geht denn Qt4 mit Leap 42.1?
abgdf hat geschrieben:
Oh:

revealed hat geschrieben:
Zu: "Rückinstallation auf Qt4" ?
Wenn du OpenSUSE Leap 42.1 hast, kannst du das vergessen. KDE4 ist nicht vorgesehen dafür.

Dann geht das wohl nicht.
D.h. konkret pyExifToolGui geht leider leider nicht.
Ich habe das kommadozeilenprogramm exiftool getestet.
Mit dem Tool kann man ein komplettes EXIF auslesen.
Allerdings kannst Du keinem Fotgrafen zumuten mit einem Komandozeilen Tool zu arbeiten!

abgdf hat geschrieben:
Komandozeilenprogramm -> 20 Zeilen Code
Perl-Skript -> 50 Zeilen Code
GUI-Benutzung -> 200 Klicks
C++-Anwendung schreiben -> 2.000 Zeilen Code
Einem Qt C++ Programmierer kannst Du nicht zumuten Perl-Skrit oder ähnliches zu programmiern.
Wenn ich selber eine GUI programmiere benutze ich auch exiftool als Subprozess - Aufruf. Habe soetwas ähnliches bereits mehrfach mit convert gemacht.

Trotdem vielen Dank für Deine Hilfe. :cuinlove:

viele Grüsse aus dem abendliche Oberbayern
vom bayernherz :thumbs:
 

tomm.fa

Administrator
Teammitglied
bayernherz schrieb:
Dann geht das wohl nicht.
D.h. konkret pyExifToolGui geht leider leider nicht.
und
bayernherz schrieb:
Allerdings kannst Du keinem Fotgrafen zumuten mit einem Komandozeilen Tool zu arbeiten!

Du solltest nicht von dir auf andere schließen.
  • pyExifToolGui funktioniert hier (Umlaute sollten vermieden werden) einwandfrei mit openSUSE Leap 42.2 und openSUSE Tumbleweed, einzig die Installation von python-pyside musste hier noch durchgeführt werden (libQtWebKit4, libphonon4, libshiboken-python2_7-1_2, phonon-backend-gstreamer wurden als Abhängigkeit mitinstalliert).
  • Auch mit exiftool ist die Änderung des Copyright und „Artisten“ kein wirklich großer Akt. Man kann, als Beispiel, sich die anzupassenden Dateien (hier jetzt zwanzig) in einen Ordner legen und dann einfach
    Code:
    exiftool -artist="Tom (tom aett mymail.com)" -copyright="Tom (tom aett mymail.com)" /home/tom/Fotos/RAW/Exif/*.PEF
    ausführen.
 

Sauerland

Ultimate Guru
D.h. konkret pyExifToolGui geht leider leider nicht.
Hast du einmal versucht, das Programm ohne Installation zu starten?
Tut hier.
Aber ob es dann deinen Ansprüchen genügt......

Ist im Ordner Entpackordner/bin.
Code:
./pyexiftoolgui
 

abgdf

Guru
Also nochmal ganz langsam (obwohl eigentlich schon fast alles gesagt ist):
Sauerland schrieb:
D.h. konkret pyExifToolGui geht leider leider nicht.
Hast du einmal versucht, das Programm ohne Installation zu starten?
Tut hier.
Aber ob es dann deinen Ansprüchen genügt......

Ist im Ordner Entpackordner/bin.
Code:
./pyexiftoolgui
Das setzt voraus, daß Qt4 auf dem System läuft (kann sein, daß es mit Leap doch geht, ich bin davon ausgegangen, daß Leap nur Qt5, aber nicht mehr Qt4 unterstützt, aber ich kann mich da irren, weil ich kein Leap habe). Und dann braucht man noch die Qt4-Bindings für Python, genannt "python-pyside". Dazu noch die Pakete, die tomm.fa genannt hatte. Wenn das Programm bei Dir läuft, heißt das, daß bei Dir insoweit alles da ist. Ob das bei bayernherz auch so ist, kann man nicht wissen.
tomm.fa schrieb:
Auch mit exiftool ist die Änderung des Copyright und „Artisten“ kein wirklich großer Akt. Man kann, als Beispiel, sich die anzupassenden Dateien (hier jetzt zwanzig) in einen Ordner legen und dann einfach
Code:
exiftool -artist="Tom (tom aett mymail.com)" -copyright="Tom (tom aett mymail.com)" /home/tom/Fotos/RAW/Exif/*.PEF
ausführen.
Das sag' ich ja die ganze Zeit. Wenn man noch ein bißchen Datenverarbeitung um die Zeile hätte, um seine Fotodateien genau einzugrenzen und die zu ändernden Werte genau einzustellen, wäre man bei ca. 20 Zeilen bash-Code für das Kommandozeilenprogramm (s.o.). Aber bayernherz will das nicht hören.
bayernherz schrieb:
Allerdings kannst Du keinem Fotgrafen zumuten mit einem Komandozeilen Tool zu arbeiten!
Einem beliebigen Fotografen vielleicht nicht. Der wird zu 90% Windows verwenden und kann dann die Kombination aus exiftool und ExifToolGUI (Windows-C/C++-Executable) verwenden.
Wenn er aber auch Linux-User ist - so wie Du -, dann kann man ihm mE durchaus zumuten, auch mal kurz die Konsole aufzumachen.
bayernherz schrieb:
Einem Qt C++ Programmierer kannst Du nicht zumuten Perl-Skrit oder ähnliches zu programmiern.
Warum nicht? C++ ist eine ziemlich schwierige Sprache, in der man den Speicher selbst verwalten muß. Deutlich schwieriger als die Skriptsprachen Perl und Python (wo man das nicht muß). Normalerweise haben C++-Programmierer irgendwas mit Informatik studiert (weil das eben kein Kinderspiel ist). Ich hab' mich gerade näher damit beschäftigt, wie der Lehrplan (Modulplan) für den "Bachelor Informatik" aussieht. Lehrsprachen sind da erst sowas Pascal-ähnliches und dann vor allem Java (was man in der Praxis gar nicht so oft verwenden würde). Das heißt: Ein studierter Programmierer kennt die zugrundeliegenden Strukturen und ist deshalb in keiner Weise auf eine bestimmte Sprache festgelegt.

Bei Qt-Programmierung kommt noch hinzu, daß hier die Anbindung für Python der für C++ ganz ähnlich ist (nur in Python eben einfacher), weil beide Sprachen typischerweise objektorientiert sind. Das heißt: Ein C++-Qt-Programmierer hätte überhaupt kein Problem damit, pyExifToolGUI nach Python/Qt5 oder nach C++/Qt5 zu übertragen.
--
Um mal zu zeigen, was ich, der ich's (bisher) nicht studiert habe, so übertragen kann:

Von C++/SFML:

https://www.youtube.com/watch?v=N60lBZDEwJ8

Nach Python/Pygame/SDL (a und q to fly) (wie gesagt sind Python und C++ relativ nah' beieinander):
Code:
#!/usr/bin/python

import pygame
import math
import os

WIDTH = 800
HEIGHT = 600

os.environ['SDL_VIDEO_WINDOW_POS'] = "100,50"

roadW = 2000
segL = 200 # segment length

camD = 0.84 # camera depth

class Line:

    def __init__(self):
        self.x = 0 # 3d center of line
        self.y = 0
        self.z = 0
        self.X = 0 # screen coord
        self.Y = 0
        self.W = 0
        self.scale = 0
        self.curve = 0

    def setz(self, a):
        self.z = a

    def setcurve(self, a):
        self.curve = a

    # from world to screen coordinates
    def project(self, camX, camY, camZ):
        self.scale = camD / (self.z - camZ)
        self.X = (1 + self.scale * (self.x - camX)) * WIDTH / 2.
        self.Y = (1 - self.scale * (self.y - camY)) * HEIGHT / 2.
        self.W = self.scale * roadW * WIDTH / 2.

def drawQuad(window, color, x1, y1, w1, x2, y2, w2):
    pygame.draw.polygon(window,
                        color,
                        ((x1 - w1, y1),
                         (x2 - w2, y2),
                         (x2 + w2, y2),
                         (x1 + w1, y1))) 


pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Outrun Racing!")
pygame.mouse.set_visible(1)
pygame.key.set_repeat(1, 30)
clock = pygame.time.Clock()
running = True

try:
    bg = pygame.image.load("images/bge.png")
    # bg = pygame.transform.scale(bg, (WIDTH, HEIGHT))
except:
    bg = None

lines = []
for i in range(1, 1600, 1):
    line = Line()
    line.setz(i * segL)
    if i > 300 and i < 700:
        line.setcurve(0.5)
    if i > 750:
        line.y = math.sin(i / 30.0) * 1500
    lines.append(line)

N = len(lines)
pos = 0
playerX = 0
flying = 0

while running:
    clock.tick(50)

    x = 0
    dx = 0
    maxy = HEIGHT

    pygame.event.pump()
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        playerX -= 200
    if keys[pygame.K_RIGHT]:
        playerX += 200
    if keys[pygame.K_UP]:
        pos += 200
    if keys[pygame.K_DOWN]:
        pos -= 200
    if keys[pygame.K_q]:
        flying += 200
    if keys[pygame.K_a]:
        flying -= 200
    if keys[pygame.K_ESCAPE]:
        running = False
        continue

    while pos >= N * segL:
        pos -= N * segL

    while pos < 0:
        pos += N * segL

    startPos = pos / segL

    if flying < 0:
        flying = 0

    camH = 1500 + lines[startPos].y + flying

    if bg:
        screen.blit(bg, (0,0))
    else:
        screen.fill((0, 0, 0))

    # draw road
    for n in range(startPos, startPos + 300, 1):
        l = lines[n % N]
        if n >= N:
            n2 = N * segL
        else:
            n2 = 0
        l.project(playerX - x, camH, pos)
        x += dx
        dx += l.curve

        if l.Y >= maxy:
            continue
        maxy = l.Y

        if (n / 3) % 2:
            grass = (16, 200, 16)
            rumble = (255, 255, 255)
            road = (107, 107, 107)
        else:
            grass = (0, 154, 0)
            rumble = (0, 0, 0)
            road = (105, 105, 105)

        p = lines[(n - 1) % N] # previous line

        drawQuad(screen, grass, 0, p.Y, WIDTH, 0, l.Y, WIDTH)
        drawQuad(screen, rumble, p.X, p.Y, p.W * 1.2, l.X, l.Y, l.W * 1.2)
        drawQuad(screen, road, p.X, p.Y, p.W, l.X, l.Y, l.W)

    pygame.display.flip()
 

Sauerland

Ultimate Guru
@abgdf
Wenn man es entpackt, gibt es einige Dateien, die man lesen sollte, sonst kann man es auch nicht installieren.

Ist genauso wie bei einem Programm, welches man aus den Sourcen kompilieren möchte.
 

TomcatMJ

Guru
Was sich auch lohnen könnte aber bei weitem kein kleines Tool ist für diesen Job (eher ein verdammt umfangreiches) und zudem auch noch etwas mehr als EXIF-Informationen als im Foto speicherbaren Metadateninhalt nutzen kann:
digikam (ist übrigens bei opensuse und den meisten Linuxdristris direkt in den Repos drin, da es eines der zugkräftigsten KDE-Programme ist)
Damit und mit den kipi-plugins dafür kannst du EXIF,IPC und XMP Metadaten bearbeiten, Geotagging hinzufügen und auch mit Farbprofilen arbeiten (und die Sammlung nach eigenen Stichworten sortieren, etliche Berarbeitungen damit automatisieren, Export zu diversen Dienstleistern oder eigenen Websites mit machen, etc. pp)...dürfte also ein ziemlicher Killertool für Fotografen sein ;)
 
OP
B

bayernherz

Hacker
hallo community,

abgdf hat geschrieben:

TomcatMJ hat geschrieben: ↑
30. Jan 2017, 10:54
digikam

Hatte tomm.fa schon zweimal genannt. Machte offenbar keinen Eindruck auf bayernherz. :roll:
Habe mir dgikam nochmal angesehen. Es sieht so aus, als ob nur IPTC Eintäge bearbeitet oder ergänzt werden können und keine EXIF-Eintäge. Ausserdem ist bei einem Bildbearbeitungsprogramm wie GIMP, XnViewMP oder digikam die Gefahr relativ gross, das die Bilddaten neu kompremiert u. erneut gespeichert werden. Was wiederrum Qualitätsverlust bedeutet.

Ich habe mir nochmals das Tool exiftool genauer angesehen.
Code:
exiftool IMGd_0805.JPG -artist="Bayernherz & Co"
Eigendlich ist das genau was ich benötige, nähmlich einzelne Einträge vom EXIF zu editieren.
Allerdings erzeugt exiftool bei Änderung eine Backup-Datei, was mir garnicht befällt.
Das könnte bei kleineren USB-Sticks zu Problemen führen, denn die Bilddatei nicht klein sind.

pyexiftoolgui kommt weniger, wegen dem Qt4 in Frage!
Ist allerdings auch genau was ich benötige.

Da noch weiter User damit arbeiten, die keine Linux-Enthusiasten sind u. auch keine Komandozeilen orientierten Tools bedienen können, benötige ich unbedingt eine GUI dazu.

Da tendiere ich zu einem selbstentwickeltem Qt C++ Programm, das als Tochter-Prozess exiftool aufruft.
Da ich mich in meinem Berufsleben sehr viel mit C-Programmierung beschäftigt habe, ist dieses kein grösseres Problem, was allerdings auch Arbeit macht. Aber auch viel Freude. :p

Vielleich fällt jemandem noch etwas zu der Backup-Datei von exiftool ein. :???:

viele grüsse aus dem verregnetem Oberbayern
vom bayernherz :thumbs:
 

marce

Guru
bayernherz schrieb:
Vielleich fällt jemandem noch etwas zu der Backup-Datei von exiftool ein. :???:
RTFM
-overwrite_original

Overwrite the original FILE (instead of preserving it by adding _original to the file name) when writing information to an image. Caution: This option should only be used if you already have separate backup copies of your image files. The overwrite is implemented by renaming a temporary file to replace the original. This deletes the original file and replaces it with the edited version in a single operation. When combined with -o, this option causes the original file to be deleted if the output file was successfully written (ie. the file is moved instead of copied).
 
Erstens: Bei mir kann ich mit digikam auch die exifs ändern <STRG><HOCHSTELL-TASTE><M> Exif-Reiter. Vorher in den Settings gucken wie die Metadaten abgelegt werden (so von wegen "in Nebendatei" aufpassen)

Zweitens: Metadaten werden direkt in die Datei geschrieben, kann man sogar mit einem Texteditor sehen. Nix mit "...Bilddaten neu kompremiert u. erneut gespeichert..."
 
Oben