65 lines
2.4 KiB
Markdown
65 lines
2.4 KiB
Markdown
# optimg
|
|
|
|
A tiny Python CLI/library wrapping the **JPEG** and **PNG** optimization file size.
|
|
It uses **jpegoptim** and **optipng** as optimization programs.
|
|
|
|
> **NOTE** For now only **JPEG** optimization is available and **it's not loseless** ! It will set the JPEG size to a maximum of **1 Mb**. Thus, may reduce drastically the quality... Should be fixed in future release.
|
|
|
|
## Install
|
|
Make sure **jpegoptim** and **optipng** are installed on your system and are available in your **PATH**.
|
|
|
|
On Ubuntu:
|
|
```bash
|
|
sudo apt install jpegoptim optipng
|
|
```
|
|
|
|
Other system:
|
|
```bash
|
|
sudo consider-using-linux-quickly-or-die
|
|
```
|
|
|
|
Install the CLI in a dedicated environment:
|
|
```bash
|
|
make install
|
|
```
|
|
It will install the CLI in a Python virtual env: `venv.dist`.
|
|
|
|
Under your virtual environment:
|
|
```bash
|
|
optimg --help
|
|
|
|
usage: optimg [-h] [--mimetype {JPEG,PNG}] [--size {TINY,MEDIUM,LARGE,FAT}] [--dest DEST] [--workers WORKERS] [--show] [--debug] src
|
|
|
|
Optimize JPEG and PNG files from a directory.
|
|
|
|
positional arguments:
|
|
src Directory path to scan.
|
|
|
|
options:
|
|
-h, --help show this help message and exit
|
|
--mimetype {JPEG,PNG}
|
|
Filter by mimetype. Default is all.
|
|
--size {TINY,MEDIUM,LARGE,FAT}
|
|
Filter by file size. Default is all.
|
|
--dest DEST Base destination directory of optimized files.
|
|
--workers WORKERS Number of workers used to optimize files.
|
|
--show Details the directory by mimetypes and quit.
|
|
--debug Set log level to debug. Default is info.
|
|
```
|
|
|
|
You're good ! Enjoy !
|
|
|
|
## Examples
|
|
|
|
* Optimize **JPEG** files of **MEDIUM** size:
|
|
```bash
|
|
optimg /my/path --size MEDIUM --mimetype JPEG
|
|
|
|
[INFO] - 2025-10-22 12:30:30,209 - launching optimization (6145) for type: image/jpeg and size range: MEDIUM on 4 workers...
|
|
Optimizing...: 6%|██████▎ | 344/6145 [00:01<00:30, 193.12it/s
|
|
```
|
|
> **NOTE** The default **base destination directory** is the **data** folder if you don't provide `--dest` optional argument. It will be automatically created in the current path where the CLI is launched.
|
|
|
|
**ALL** the files path are preserved (sub-directory creation etc...). The **base destination directory** is here to put the files optimized elsewhere and not overwrite the originals.
|
|
|