Shrinkix
Description
Reduces the size of images for the web.
Documentation
Documentation is available on https://dashstrom.github.io/shrinkix
Installation from scratch
Windows (Chocolatey, Python, Visual Studio Build Tools, pipx)
Open an Admin PowerShell with windows + R
, write powershell
then press ctrl + shift + enter
.
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
choco install python --version=3.10.11 --override --install-arguments '/quiet PrependPath=1 Include_debug=1 Include_symbols=1 SimpleInstall=1' -y
choco install visualstudio2022-workload-vctools -y
pip install --upgrade wheel pip pipx
pipx ensurepath
Ubuntu (build requirement and pipx)
sudo apt -y update && sudo apt -y upgrade && sudo apt -y install python3-all-dev
pip install --upgrade wheel pip pipx
pipx ensurepath
Mac (Homebrew and pipx)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo "export PATH=/opt/homebrew/bin:$PATH" >> ~/.bash_profile && source ~/.bash_profile
brew install python
pip install --upgrade wheel pip pipx
pipx ensurepath
Package installation
You can install shrinkix
using pipx
from PyPI
pipx 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 Poetry and Git for work with this project.
git clone https://github.com/Dashstrom/shrinkix
cd shrinkix
poetry install --all-extras
poetry run poe setup
poetry shell
Poe
Poe is available for help you to run tasks.
test Run test suite.
lint Run linters: ruff linter, ruff formatter and mypy.
format Run linters in fix mode.
check Run all checks: lint, test and docs.
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.
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
poetry 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.