Reduce the number of colors used in image using k-mean clustering.
Require go 1.22+
go install github.com/mawngo/kcomp@latest
compress image
> kcomp .\my-image.jpeg
or compress directory of images
> kcomp .\my-dir
> kcomp -h
Reduce number of colors used in image
Usage:
kcomp [files...] [flags]
Flags:
-n, --colors int Number of colors to use (default 15)
-o, --out string Output directory name (default ".")
-s, --series int Number of image to generate, series of output with increasing number of colors up util reached --colors parameter [min:1] (default 1)
-q, --quick Increase speed in exchange of accuracy
-w, --overwrite Overwrite output if exists
-i, --round int Maximum number of round before stop adjusting (number of kmeans iterations) (default 100)
-d, --delta float Delta threshold of convergence (delta between kmeans old and new centroid’s values) (default 0.005)
-t, --concurrency int Maximum number image process at a time [min:1] (default 8)
--dalgo string Distance algo for kmeans [EuclideanDistance,EuclideanDistanceSquared] (default "EuclideanDistance")
--jpeg int Specify quality of output jpeg compression [0-100] (set to 0 to output png)
--debug Enable debug mode
-h, --help help for kcomp
> kcomp .\chika.jpeg --colors=5
10:46PM INF Processing cp=5 round=100 img=chika.jpeg dimension=200x200 format=jpeg
10:46PM INF Compress completed out=chika.100cp5.png took=60.239ms
10:46PM INF Processing completed.
Original | 5 Colors | 4 Colors |
---|---|---|