Giter Club home page Giter Club logo

fotopreprocessor's Introduction

--------------------------------------------------------------------------------
FotoPreProcessor, a PyQT4-based program to manage (EXIF) metadata of images
--------------------------------------------------------------------------------

Copyright (C) 2012-2017 Frank Abelbeck <[email protected]>

This file is part of the FotoPreProcessor program "FotoPreProcessor.py".

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

Following files are also subject to this license although not explicitly marked:
   i18n/FotoPreProcessor.de.qm
   i18n/FotoPreProcessor.de.ts 

--------------------------------------------------------------------------------
General information
--------------------------------------------------------------------------------

Author:  Frank Abelbeck
Version: 2017-07-14
Licence: GNU General Public License version 3

--------------------------------------------------------------------------------
Disclaimer
--------------------------------------------------------------------------------

I created this program because I needed a frontend for exiftool. Existing
solutions did not satisfy my needs.

FotoPreProcessor is distributed in the hope that it will help other people with
similar problems. In the end --after you have approved exiftool execution-- this
program will alter your images!

So please be cautious! I seek perfection, but I cannot verify the program's
behaviour due to the overwhelming number of possible platform configurations.

Having a (preferably read-only) backup of your raw footage is generally a good
idea before starting to process your images.

--------------------------------------------------------------------------------
Description
--------------------------------------------------------------------------------

This program displays images found in a directory and allows metadata editing.

Orientation:         Modify the EXIF tag, no image data will be altered.

GeoTagging:          Set latitude, longitude, elevation; it is also possible to use
                     OpenStreetMap for Geo browsing.

Timezone Correction: Shift timestamp from camera timezone to local time.
                     My camera is set to UTC, so I only need to know where
                     a foto was taken to get the correct time -- without
                     DST confusion. A UTC timestamp will be written to the
                     GPS timestamp, regardless of any GeoTagging.

Keywords:            Assign/modify keywords/tags. Every keyword will be stored
                     in a UTF-8 text file and will be used for word completion.
                     This shall assure that one uses a uniform set of keywords.

Copyright Notice:    Modify the image's copyright tag. I don't mind if other
                     people use images I took+published. Publish is the magic
                     word, because in that case I want other people to see it.
                     But at least I want to be mentioned as creator.

Filename:            When the changes are applied, the filename is set to
                        YYYYMMDD-HHMMSS[-i]-CameraModel.EXT
                     Local time is used, and an optional index i is added if
                     images have the same timestamp.

After editing, the user can choose to apply the changes that were made. The
program will present the exiftool commands that will be neccessary, so that the
user is able to abort the process.

The user is also able to store the changes in a YAML file for later application.

--------------------------------------------------------------------------------
Requirements
--------------------------------------------------------------------------------

Which programs and libraries are needed?
(In parantheses: Gentoo Linux versions this program was created/tested with)

Python   (3.4.5)
pytz     (2017.2)
exiftool (10.50)
PyQt5    (5.7.1)

--------------------------------------------------------------------------------
Installation (Deprecated, Program Tarballs are not Updated Anymore!)
--------------------------------------------------------------------------------

Extract the archive FotoPreProcessor.tar.gz to a directory accessible/writable
by your user, e.g. to ~/programs:

mkdir -p ~/programs
tar -xvzf FotoPreProcessor.tar.gz -C ~/programs

A directory "FotoPreProcessor" will be created, e.g. ~/programs/FotoPreProcessor

Inside this directory there will be an executable named FotoPreProcessor.py.

This initial version is not designed to integrate into the LSB and expects both
exiftool and file to reside in the directory /usr/bin. I will add an appropriate
installation routine and a settings dialog in the future...

--------------------------------------------------------------------------------
Files
--------------------------------------------------------------------------------

FotoPreProcessor.py           main program
FotoPreProcessorItem.py       custom PyQt5.QtGui.QListWidgetItem
FotoPreProcessorOSM.html      custom OpenStreetMap webpage
FotoPreProcessorTools.py      classes for GeoTagging, timezone correction etc.
FotoPreProcessorWidgets.py    custom widgets: docks and dialogs
FotoPreProcessor.exiftool     definition of a special FPPModel tag for exiftool
Makefile                      Makefile for translation tasks
i18n/FotoPreProcessor.de.qm   binary translation information
i18n/FotoPreProcessor.de.ts   translation source file
icons/FPP.png                 FotoPreProcessor application item
icons/Marker2.png             icon "marker" to mark a location
icons/changed.png             icon "wrench" to mark changed images
icons/unknownPicture2.png     icon "unknown picture"
COPYING                       GPL v3 license text
README                        (this file)
zone.tab                      time zone info (local copy of timezone-data)

--------------------------------------------------------------------------------
Known Bugs due to Qt5 Porting
--------------------------------------------------------------------------------
 - shortcuts "k" (add keyword) and "m" (look-up map location) don't work anymore
 - map marker is not shown since using QtWebKitWidgets.QWebView (PyQt5)

--------------------------------------------------------------------------------
Changelog
--------------------------------------------------------------------------------

2012-08-10: initial release as "works for me" version

2012-08-22: introduction of an icon for FPP,
            improved command line parsing,
            implementation of the settings dialog,
            usage of QSettings for configuration parameters and databases,
            handling of initial configuration,
            handling of wrong program paths (disabling features if neccessary)
            implementation of about dialogs,
            improved image import algorithm,
            improved event handling and dialog response during import/export,
            local zoneinfo table as fallback (removes zoneinfo dependency),
            elimination of quirks/bugs

2012-10-18: bugfixes (icon size preferences are correctly applied;
            slashes in camera name string are ignored during renaming),
            improvements (flickering during image list update got reduced;
            if a dock gets disabled while selecting multiple images it stays
            disabled until the selection is reset)

2015-06-29: incorporation of many small fixes,
            update to Python3,
            new search option for the geolocator,
            update of README and zone.tab,
            removal of tarball creation commands inside Makefile,
            transition to GitHub

2015-07-01: further Python3 porting, improvement of arg handling,
            updated translation

2015-10-25: some fixes; changes can now be saved/loaded for delayed application,
            upgrade to new signal/slot mechanism, file naming is now configurable

2015-10-26: flexible file naming activated, minor fixes

2015-11-01: fixed preview image auto-rotation behaviour to avoid applying a
            picture's orientation twice;
            program termination dialog: user can now return to the program

2015-11-04: fixed orientation bug (prevents exiftoll execution due to an
            incorrect value, remnant of the preview fix 2015-11-01;
            fixed preview behaviour: program now checks if a preview image is
            displayed correctly by comparing dimensions before and after loading

2017-07-14: ported to Qt5 in spring 2017 and fixed some porting issues;
            optimised variable initialisation code (e.g. str() --> "",
            dict() --> {}); FPP now saves the original file's MD5 sum in the
            EXIF tag "ImageUniqueID"; fixed loading progress bar (now shows the
            correct progress value even if non-image files are processed (and
            ignored) by exiftool

fotopreprocessor's People

Contributors

britton-clapp avatar frankabelbeck avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.