Skip to content
Switch branches/tags
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Photo Manipulation Tools

The photomanip package has undergone significant refactoring and is in a state of flux. In general the old code was embarrassing spaghetti code I put together to quickly do something I wanted to do. Now it's less embarrassing and hopefully more maintainable.


  • has been renamed to photomanip/ and uses the newly-refactored code and a new CLI interface
  • and have been deprecated but their functionality has not been fully replaced yet, so they remain in the deprecated folder until that time


This script will generate an average image (or long exposure simulation) using all the images in a specified folder. It assumes that the images include metadata about when they were created, and will try to make averages for each day with multiple images, each month with multiple images, and each year with multiple images.


./ -i [input_folder] -o [output_folder] -c [combination_method] -t [grouping_tag] -a [author]

input_folder is any folder you have permission to read that contains .jpg files.

output_folder is a folder to which you have write permission: all averages will be placed in this folder

combination_method is either crop or pad. crop means that all images are cropped into square images with dimensions equal to the smallest dimension found in all the images in the folder. pad means that all images are padded into square images with dimensions equal to the largest dimension found in all the images in the folder. Default is crop.

grouping_tag is a prefix to an IPTC keyword that contains a date in YYYYMMDD format, for example with the keyword mydate=19991231, the grouping tag would be mydate=. this can be used to group photos instead of the EXIF DateTimeCreated if desired. Default is None.

author is the author generating the average image. Default is andrew catellier, in case you want to give me credit for creating your average images.

flickr_set_id is a valid Flickr photoset ID to which you have upload permissions. If set, the program will attempt to upload daily averages to flickr using a key and secret specified in config.yaml:


cache is boolean, specifying whether the program should keep track of intermediate average results. This cache can significantly reduce processing time if one is repeatedly generating averages from one set of images but can also take a significant amount of space—the cache images are M x N x 3 32 bit float TIFs.

Deprecated Tools

The idea behind this script is to download all the photos from a Flickr set specified by its set ID, organize them by month taken, and then generate one average image (or long exposure simulation) for each month. It leverages to do the photo manipulation.


    ./ [flickr_set_id]

This script will add machine tags to all photos in a specified flickr set with a specified namespace and predicate, but the value will be calculated based on the title (or, if you uncomment a line of code and comment a couple others, the photo's "taken" date). A valid OAuth key with write permissions must be available.


    ./ [set_id] [namespace] [predicate]


just a few photo manipulation tools




No releases published


No packages published