Shrinkix
Description
Reduces the size of images for the web.
Documentation
Documentation is available on https://dashstrom.github.io/shrinkix
Installation from scratch
Windows
Open an Admin PowerShell with windows + X
, then press a
.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
MacOs and Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
Package installation (All System)
You can install shrinkix
using uv
from PyPI
uv tool install shrinkix
Usage
Usage as script
shrinkix image.png --max-width 1024 --max-height 1024 --artist 'Dashstrom' --copyright 'dashstrom.pro@gmail.com'
Usage as module
from shrinkix import Shrinkix
shrinkix = Shrinkix(
max_width=1024,
max_height=1024,
keep_metadata=False,
)
shrinkix.shrink("tests/resources/test.jpg", "test.png")
Development
Contributing
Contributions are very welcome. Tests can be run with poe check
, please
ensure the coverage at least stays the same before you submit a pull request.
Setup
You need to install uv and Git for work with this project.
git clone https://github.com/Dashstrom/shrinkix
cd shrinkix
uv sync
uv run poe setup
Poe
Poe is available for help you to run tasks.
test Run test suite.
lint Run linters: ruff checker and ruff formatter and mypy.
format Run linters in fix mode.
check Run all checks: lint, test and docs.
check-tag Check if the current tag match the version.
cov Run coverage for generate report and html.
open-cov Open html coverage report in webbrowser.
docs Build documentation.
open-docs Open documentation in webbrowser.
setup Setup pre-commit.
pre-commit Run pre-commit.
commit Test, commit and push.
clean Clean cache files.
Skip commit verification
If the linting is not successful, you can’t commit. For forcing the commit you can use the next command :
git commit --no-verify -m 'MESSAGE'
Commit with commitizen
To respect commit conventions, this repository uses Commitizen.
cz c
How to add dependency
uv add 'PACKAGE'
Ignore illegitimate warnings
To ignore illegitimate warnings you can add :
# noqa: ERROR_CODE on the same line for ruff.
# type: ignore[ERROR_CODE] on the same line for mypy.
# pragma: no cover on the same line to ignore line for coverage.
# doctest: +SKIP on the same line for doctest.
Uninstall
pipx uninstall shrinkix
License
This work is licensed under MIT.