A Python batch image processing utility which uses the Pillow (PIL) library to apply various image effects and transformations.
- Python 3
- Pillow (PIL)
- Numpy
- Clone the repo
git clone https://github.com/bradsec/pilfx
- Place original images into the
src
directory within the cloned pilfx directory.
Note: Newly generated images will be saved in the dst
directory.
The src and dst locations can be changes using the -s and -d arguments.
- Run the command
python3 pilfx.py (options)
as per examples shown below.
A list of pre-defined color palettes can be found in color_palettes.py
. Additional palettes can be added. Color palette are used the set colors arguments --set_colors "palettename"
Colors can also be set manually. Colors must be in HEX format example for red, white and black: --set_colors "#ff0000,#ffffff,#000000"
To make a color transparent in the end image for png files only use --set_trans_color
Example black transparet --set_trans_color "#000000"
For detailed photos this works best when you have reduced and set the colors in the image.
██████╗ ██╗██╗ ███████╗██╗ ██╗
██╔══██╗██║██║ ██╔════╝╚██╗██╔╝
██████╔╝██║██║ █████╗ ╚███╔╝
██╔═══╝ ██║██║ ██╔══╝ ██╔██╗
██║ ██║███████╗██║ ██╔╝ ██╗
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝
[Batch Image Transformations and Effects with Python PIL]
No command line arguments provided
usage: pilfx.py [-h] [-s SRC_DIR] [-d DST_DIR] [-c REDUCE_COLORS] [-g] [-i] [-o OPACITY] [-r ROTATE] [--width WIDTH] [--height HEIGHT]
[--scale SCALE] [--algo ALGO] [--filetype FILETYPE] [--pixelize [PIXELIZE]] [--halftone [HALFTONE]] [--dither]
[--posterize [POSTERIZE]] [--blur_before BLUR_BEFORE] [--blur_after BLUR_AFTER] [--brightness BRIGHTNESS]
[--saturation SATURATION] [--htsample HTSAMPLE] [--shuffle_colors] [--set_colors SET_COLORS]
[--set_trans_colors SET_TRANS_COLORS]
Process images.
optional arguments:
-h, --help show this help message and exit
-s SRC_DIR, --src_dir SRC_DIR
Source (src) directory (contains original images to be processed)
-d DST_DIR, --dst_dir DST_DIR
Destination (dst) directory (contains newly created images)
-c REDUCE_COLORS, --reduce_colors REDUCE_COLORS
Reduce the amount of colors in the images color palette
-g, --grayscale Grayscale
-i, --invert Invert colors
-o OPACITY, --opacity OPACITY
Set opacity of final image (values 0.0 to 1.0 with zero being fully transparent)
-r ROTATE, --rotate ROTATE
Rotation angle
--width WIDTH New width
--height HEIGHT New height
--scale SCALE Scale percentage
--algo ALGO Change resample algorithm NEAREST = 0, LANCZOS = 1, BILINEAR = 2, BICUBIC = 3, BOX = 4, HAMMING = 5
--filetype FILETYPE Output filetype - .png (preserve transparency effects) or .jpg (no transparency, generally smaller file sizes)
--pixelize [PIXELIZE]
Pixelize
--halftone [HALFTONE]
Halftone foreground and background colors
--dither Apply FLOYDSTEINBERG dithering
--posterize [POSTERIZE]
Posterize image bits 1-8
--blur_before BLUR_BEFORE
Blur factor (before any effects applied) - Recommended values 0-10, high values can be used
--blur_after BLUR_AFTER
Blur factor (after any effects are applied) - Recommended values 0-10, high values can be used
--brightness BRIGHTNESS
Brightness
--saturation SATURATION
Saturation
--htsample HTSAMPLE Change halftone sample size
--shuffle_colors Colors in --set_colors including color palettes will be shuffled each time.
--set_colors SET_COLORS
Custom colors or color palette name to replace existing colors
--set_trans_colors SET_TRANS_COLORS
Colors to be made transparent
Sample photo credit - Unsplash
# Resize to a required width maintaining aspect ratio
python3 pilfx.py -width 1920
# Resize to a required height maintaining aspect ratio
python3 pilfx.py -height 1080
# Note: Setting both width and height will not squash image it will crop to the size unless you have correct aspect ratio.
# Alternative resizing by scaling up or down (by percentage)
# Example for 200% (twice original size)
python3 pilfx.py --scale 200
# Example for 50% (half size)
python3 pilfx.py --scale 50
# Reduce colors in image
# Example reduce to 16 color image
python3 pilfx.py -c 16
# Example reduce to 4 color image
python3 pilfx.py -c 4
# Example reduce to two color image and change colors (use HEX values)
python3 pilfx.py -c 2 --set_colors "#000000,#FFFFFF"
# Example to reduce colors and set one of the colors to transparent
python3 pilfx.py -c 2 --set_colors "#000000,#FFFFFF" --set_trans_colors "#000000"
# Example using color palette defined in `color_palettes.py`
# This method will reduce the image colors by how many are in the named color_palette
python3 pilfx.py --set_colors "cga"
# Creating a halftone effect (choose two HEX colors)
python3 pilfx.py --halftone "#FFFFFF,#000000"
# Change halftone sample size (circles) default is 10
# Increasing --htsample value will make the pattern larger
python3 pilfx.py --halftone "#FFFFFF,#000000" --htsample 20
# Halftone with transparent background
python3 pilfx.py --halftone "#FFFFFF, none"
# Halftone with original image in background
python3 pilfx.py --halftone "#000000, image"
# Pixelize image retro effect try different values 64, 128, 256
python3 pilfx.py --pixelize 128
# Can be used with other combinations
python3 pilfx.py --set_colors "c64" --pixelize 128
# Rotate images with --rotate and angle
python3 pilfx.py --rotate 90