Scripts that can work as git
hooks to optimize and manipulate images.
These scripts can be called directly or with the provided configration for the pre-commit framework.
For details see below.
Add this to your .pre-commit-config.yaml
:
- repo: https://github.com/boidolr/pre-commit-images
rev: v1.8.3 # Use the ref you want to point at
hooks:
- id: optimize-png
# - id: ...
For an extended example see .pre-commit-config.yaml
.
optimize-avif
: Compressavif
images.--threshold
can be used to configure which size difference should be used to keep the image.--quality
to configure minimum quality setting (best: 100, worst: 0).--effort
to set the quality/speed tradeoff (slowest: 0, fastest: 10).
optimize-jpg
: Compressjpeg
images.--threshold
can be used to configure which size difference should be used to keep the image.--quality
can be used to configure quality setting for a JPG image.
optimize-png
: Compresspng
images.--threshold
can be used to configure which size difference should be used to keep the image.
optimize-svg
: Compresssvg
images.--threshold
can be used to configure which size difference should be used to keep the image.
optimize-webp
: Compresswebp
images.--threshold
can be used to configure which size difference should be used to keep the image.--lossless
switch to lossless compression.--quality
can be used to configure quality setting for lossy compression or effort to spend on lossless compression.
resize
(experimental): Resizeavif
,jpeg
,png
andwebp
images with fixed dimensions. Required options:--width
new width of images.--height
new height of images.
Install the package to get access to the scripts defined as command line entry points in pyproject.toml
.
The scripts accept the arguments given for the pre-commit hooks. Additionally they exepect to receive the file names to work on.
An example invocation could be uvx --from 'git+https://github.com/boidolr/pre-commit-images.git[avif]' optimize-avif tests/test.avif
.
Available entry points are identical to the pre-commit hooks:
optimize-avif
optimize-jpg
optimize-png
optimize-svg
optimize-webp
resize
These hooks only work because of other projects: