Batch process (resize, rotate, remove background, remove GPS, add border, set transparency, auto do all, get meta info) image files (HEIC, JPG, PNG, TIFF, WEBP) by utilizing Pillow / PIL library. It can apply the action(s) on a single image file or all image files in the input folder / directory. Tested working on macOS and Windows.
The Remove background (make background transparent) feature depends on onnxruntime
library. The 1.24.x and later versions support Python 3.14.
python: >=3.12, <3.15
Install the Astral's uv tool once to
prepare for all Python tools and packages installation. Install the Astral's
uv by its standalone installers:
# On macOS and Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install the latest Python by uv command
uv python install 3.13
# Create the Python virtualenv by uv command
uv venv
# Activate the Python virtualenv
source .venv/bin/activate
# On Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# Add uv command into environment search path
$env:Path = "C:\Users\{your_user_name}\.local\bin:$env:Path"
# Create the Python virtualenv by uv command
uv venv
# Activate the Python virtualenv
.venv\Scripts\activate
Install the batch_img tool from PyPI by the Astral's
uv command:
uv pip install --upgrade batch_img
✗ batch_img --version
1.4.5
✗ batch_img auto ~/Documents
Resize to 1920-pixel max length. Remove GPS location info. Add 5-pixel width black color border.
...
Auto processed 8/8 files
✅ Processed the image file(s)
✗ batch_img info -i ~/Documents
...
Read meta info from 10/10 files
Elapsed time: 0.42 s
All image operations accept -i / --input for the input file or directory,
for example batch_img resize -i ~/Pictures -l 1920. You can get metadata info
from files with batch_img info -i <file-or-directory>.
Use --quiet with info sub-command to write the metadata to a local text file:
batch_img --quiet info -i ~/Downloads writes img_meta_info.txt
in the working directory.
Contributions are welcome! Please see the details in Contribution Guidelines
✗ batch_img --help
Usage: batch_img [OPTIONS] COMMAND [ARGS]...
Batch image processing tool.
Options:
-i, --input PATH Input an image file or a directory.
--quiet Process image(s) with minimum stdout in quiet mode.
--update Update the tool to the latest version.
--version Show the tool's version.
--help Show this message and exit.
Commands:
auto Auto process (resize to 1920-px, remove GPS, add border)...
border Add internal border to image(s), not expand the size.
do-effect Do special effect to image(s).
grayscale Convert to grayscale image(s).
info Print EXIF information for the input image file(s).
remove-bg Remove background (make background transparent) in image(s).
remove-gps Remove GPS location info in image(s).
resize Resize image(s).
rotate Rotate image(s).
transparent Set transparency on image(s).
✗ batch_img auto --help
Usage: batch_img auto [OPTIONS]
Auto process (resize to 1920-px, remove GPS, add border) image file(s).
Options:
-o, --output TEXT Output file path. If not specified, replace the input
file. [default: ""]
-i, --input PATH Input image file or directory.
-ar, --auto_rotate Auto-rotate image (experimental)
--help Show this message and exit.
✗ batch_img border --help
Usage: batch_img border [OPTIONS]
Add internal border to image file(s), not expand the size.
Options:
-o, --output TEXT Output file path. If not specified, replace
the input file. [default: ""]
-i, --input PATH Input image file or directory.
-bw, --border_width INTEGER RANGE
Add border to image file(s) with the
border_width. 0 - no border. [default: 5;
0<=x<=30]
-bc, --border_color TEXT Add border to image file(s) with the
border_color string. [default: gray]
--help Show this message and exit.
✗ batch_img do-effect --help
Usage: batch_img do-effect [OPTIONS]
Do special effect to image file(s).
Options:
-o, --output TEXT Output file path. If not specified, replace
the input file. [default: ""]
-i, --input PATH Input image file or directory.
-e, --effect [blur|hdr|neon] Do special effect to image file(s): blur, hdr,
neon. [default: neon]
--help Show this message and exit.
✗ batch_img remove-bg --help
Usage: batch_img remove-bg [OPTIONS]
Remove background (make background transparent) in image file(s).
Options:
-o, --output TEXT Output file path. If not specified, replace the input
file. [default: ""]
-i, --input PATH Input image file or directory.
--help Show this message and exit.
✗ batch_img remove-gps --help
Usage: batch_img remove-gps [OPTIONS]
Remove GPS location info in image file(s).
Options:
-o, --output TEXT Output file path. If not specified, replace the input
file. [default: ""]
-i, --input PATH Input image file or directory.
--help Show this message and exit.
✗ batch_img resize --help
Usage: batch_img resize [OPTIONS]
Resize image file(s).
Options:
-o, --output TEXT Output file path. If not specified, replace the
input file. [default: ""]
-i, --input PATH Input image file or directory.
-l, --length INTEGER RANGE Resize image file(s) on original aspect ratio to
the max side length. 0 - no resize. [default:
0; x>=0]
--help Show this message and exit.
✗ batch_img rotate --help
Usage: batch_img rotate [OPTIONS]
Rotate image file(s).
Options:
-o, --output TEXT Output file path. If not specified, replace the
input file. [default: ""]
-i, --input PATH Input image file or directory.
-a, --angle [0|90|180|270] Rotate image file(s) to the clockwise angle. 0 -
no rotate. [default: 0]
--help Show this message and exit.
✗ batch_img transparent --help
Usage: batch_img transparent [OPTIONS]
Set transparency on image file(s).
Options:
-o, --output TEXT Output file path. If not specified, replace
the input file. [default: ""]
-i, --input PATH Input image file or directory.
-t, --transparency INTEGER RANGE
Set transparency on image file(s). 0 - fully
transparent, 255 - completely opaque.
[default: 127; 0<=x<=255]
-w, --white Make white pixels fully transparent.
--help Show this message and exit.
batch_img is distributed under MIT License. Please see details in LICENSE.