This Python script converts TIF images to PNG format. It allows for resizing the images to various predefined sizes (Original, 4K, 2K) and works either on a directory or individual files. It also allows for renaming the converted files based on a regex pattern extracted from the original file name.
- Python 3.5+
- PIL (Pillow) library
poetry
is used to manage dependencies and virtual environments.
GitHub Actions
is used for CI/CD, with a trusted publishing connection to PyPi.
Install the convert-tif-to-png tool via pip:
pip install convert-tif-to-png
Also, ensure you have the required Pillow library:
pip install Pillow
Option | Description |
---|---|
--dir |
Path to directory containing TIF files to convert. |
--file |
Path to individual TIF file(s) to convert. |
--pattern |
Regex pattern to name converted files, extracted from the original file name. |
--size |
Resize images to one of the following sizes: original , 4k , 2k . |
--log |
Log output to file. Defaults to ./.log.txt |
Note: You can use Python's -m
flag to run a Module as a script. Module names use underscores instead of hyphens.
To process a directory:
python3 -m convert_tif_to_png --dir /path/to/directory --pattern 'some-regex-pattern' --size 4k
To process individual files:
python3 -m convert_tif_to_png --file /path/to/file1.tif /path/to/file2.tif --pattern 'some-regex-pattern' --size 4k
Regular expressions (regex) are patterns used to match and manipulate strings in text. Use RegExr to learn about, build, and test your patterns in a UI. ChatGPT is another great resource for learning Regex and building complex patterns with natural language.
The --pattern
option renames converted files based on a regex pattern extracted from the original file name, excluding the file extension and preceding path information.
As an example, if you have the following files:
CANON1234.tif
CANON5678.tif
CANON8149-ENHANCED-NR.tif
CANON9322-ENHANCED-NR.tif
CANON9322-ENHANCED-NR (copy 1).tif
Use the following regex pattern to extract the file name CANON followed by a series of numbers:
--pattern 'CANON\d+'
This will result in the following file names:
CANON1234.png
CANON5678.png
CANON8149.png
CANON9322.png
CANON9322.png
Note that if there is a mismatch with the pattern, the original file name will be used.
Before integrating this script into MacOS Automator, make sure you have the following prerequisites installed and configured:
-
pyenv
: A Python version management tool, used to set the Python version for the script.- Installation: Use Homebrew by running
brew install pyenv
in your terminal. - Setting up: Add
pyenv init
to your shell to enable shims and autocompletion. See official documentation for more details.
- Installation: Use Homebrew by running
-
Python Path: You'll need the full path to your Python interpreter.
- Finding Python Path: Run
which python
orwhich python3
in your terminal to get the full path.
- Finding Python Path: Run
To integrate this script into macOS Automator for automated file processing:
- Open Automator and create a new "Folder Action."
- Set the "Folder Action receives files and folders added to" to your desired directory.
- Set "Pass input" to "as arguments."
- Add a "Run Shell Script" action.
- Enter the full path to your Python interpreter and script, along with any command line arguments, like so:
/full/path/to/python3 -m convert_tif_to_png --size 4k --pattern 'some-regex-pattern' --file "$@"
Make sure you replace /full/path/to/python3
with the actual path on your system.
The "$@"
parameter in Automator references file(s) added to the folder.
Any new TIF files added to the specified folder will automatically be converted to PNG.