Resize/mask/compress images (PNG/JPEG) via Streamlit + Pillow.
Project description
🖼️ imagectl — Batch Resize, Mask & Compress (Web UI)
imagectl is a lightweight and fast batch image processing tool with a clean Streamlit Web UI.
Resize (px or cm with DPI), apply circle/ellipse masks, smart compression to target size, and range‑based selection by filename — then download all results as a single ZIP.
Perfect for creators, e‑commerce, thumbnails, social media, and bulk optimization.
✨ Features
- Resize using px or cm @ DPI
- Mask: Circular or elliptical cut‑out (with transparency)
- Compression: Auto‑adjusts JPEG quality to reach max KB
- Supported formats: JPG / PNG / WebP / BMP
- Smart range filter based on numbers in filenames:
- Examples:
5,2-6,-4,7-,1,3,6-9,12-
- Examples:
- Auto‑index option for files without numbers (1..N)
- Export all results as a single ZIP
🚀 Quick Start
Recommended: use uv for fast development, or pip normally.
(PyPI install section will be added after publishing)
Using uv (local dev)
git clone https://github.com/TamerOnLine/imagectl.git
cd imagectl
uv sync
uv run imagectl --port 8600
Using pip (local dev)
git clone https://github.com/TamerOnLine/imagectl.git
cd imagectl
pip install -e .
imagectl --port 8600
Default port: 8501. Use
--port 8600to change.
🧑💻 CLI / Commands
Two console scripts are provided:
imagectl→ Launch Web UI (Streamlit)imagectl-web→ Same as above (explicit Web name)
Examples:
imagectl
imagectl --port 8600
imagectl-web --port 9000
Then open:
http://localhost:8501
# or
http://localhost:8600
📥 Usage (inside UI)
- Upload one or multiple images (JPG/PNG/WebP/BMP)
- Choose size: px or cm + DPI
- Optional: Circle or Ellipse mask
- Set Max size (KB) for smart compression
- Optional: enter a Range to filter which images to process
5,2-6,-4,7-,1,3,6-9,12-
- Click Process ✨ and download the ZIP
If filenames lack numbers, enable Auto‑index to number them by upload order.
🖼️ Screenshots / Demo (Placeholders)
| Upload & Preview | Settings | Download ZIP |
|---|---|---|
| (screenshot 1) | (screenshot 2) | (screenshot 3) |
Add a short GIF (6–10s) showing: upload → adjust → download.
Suggested size: 900×500
Filename: demo.gif
🗺️ Roadmap
- Initial release: resize/mask/compress + ranges
- CLI batch processing (no UI)
- Improved PNG & WebP compression
- Basic filters (sharpness / contrast / bg remove)
- API mode for integration
🤝 Contributing
Contributions are welcome!
- Open an issue
- Fork the repo
- Create a feature branch
- Submit a PR
🪪 License
MIT — see LICENSE
🔗 Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file imagectl-0.1.0.tar.gz.
File metadata
- Download URL: imagectl-0.1.0.tar.gz
- Upload date:
- Size: 12.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e18c7c65dcfd32b0aaf55f89b74460c79044026a71cef24d6358f77608c76ead
|
|
| MD5 |
6d5ea1d08b84fa313841f127127fb838
|
|
| BLAKE2b-256 |
bbe4292449c96544e543d699006b348875d5a51aed219a5fb74b8b774ca2493b
|
Provenance
The following attestation bundles were made for imagectl-0.1.0.tar.gz:
Publisher:
publish.yml on TamerOnLine/imagectl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
imagectl-0.1.0.tar.gz -
Subject digest:
e18c7c65dcfd32b0aaf55f89b74460c79044026a71cef24d6358f77608c76ead - Sigstore transparency entry: 649702488
- Sigstore integration time:
-
Permalink:
TamerOnLine/imagectl@fb0aeb8f4cb442cd2f2ccdc51700c2027e1460fb -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/TamerOnLine
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fb0aeb8f4cb442cd2f2ccdc51700c2027e1460fb -
Trigger Event:
push
-
Statement type:
File details
Details for the file imagectl-0.1.0-py3-none-any.whl.
File metadata
- Download URL: imagectl-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5a454d66bd2e1ed22341d5d453508ebcd1c6f2a9d09b350e9be6d9a3f8803c7
|
|
| MD5 |
b6ef07a4d09c2f17408b7915e42d00b0
|
|
| BLAKE2b-256 |
c7a77ac54d1c8b9ff6706e844cb888a066f6f57c62516fb8efb9f26946c2577a
|
Provenance
The following attestation bundles were made for imagectl-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on TamerOnLine/imagectl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
imagectl-0.1.0-py3-none-any.whl -
Subject digest:
e5a454d66bd2e1ed22341d5d453508ebcd1c6f2a9d09b350e9be6d9a3f8803c7 - Sigstore transparency entry: 649702508
- Sigstore integration time:
-
Permalink:
TamerOnLine/imagectl@fb0aeb8f4cb442cd2f2ccdc51700c2027e1460fb -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/TamerOnLine
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fb0aeb8f4cb442cd2f2ccdc51700c2027e1460fb -
Trigger Event:
push
-
Statement type: