From 5f5fa2bb80021197c85d3ff43f014df0524bcfdc Mon Sep 17 00:00:00 2001 From: Milan Nikolic Date: Sun, 3 Nov 2024 19:05:02 +0100 Subject: [PATCH] Use jpegli for smaller files --- cbconvert.go | 10 ++++++++-- go.mod | 1 + go.sum | 4 ++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cbconvert.go b/cbconvert.go index 34fa07c..04407a1 100644 --- a/cbconvert.go +++ b/cbconvert.go @@ -8,7 +8,6 @@ import ( "fmt" "image" _ "image/gif" - "image/jpeg" "image/png" "io" "os" @@ -20,6 +19,7 @@ import ( "sync/atomic" "github.com/gen2brain/avif" + "github.com/gen2brain/jpegli" "github.com/gen2brain/jpegxl" "github.com/gen2brain/webp" "github.com/jsummers/gobmp" @@ -504,7 +504,13 @@ func (c *Converter) imageEncode(img image.Image, w io.Writer) error { case "tiff": err = tiff.Encode(w, img, &tiff.Options{Compression: tiff.Uncompressed}) case "jpeg": - err = jpeg.Encode(w, img, &jpeg.Options{Quality: c.Opts.Quality}) + opts := &jpegli.EncodingOptions{} + opts.Quality = c.Opts.Quality + opts.ChromaSubsampling = image.YCbCrSubsampleRatio420 + opts.ProgressiveLevel = 2 + opts.AdaptiveQuantization = true + opts.DCTMethod = jpegli.DefaultDCTMethod + err = jpegli.Encode(w, img, opts) case "webp": err = webp.Encode(w, img, webp.Options{Quality: c.Opts.Quality, Method: webp.DefaultMethod}) case "avif": diff --git a/go.mod b/go.mod index 4251fd7..9838f8a 100644 --- a/go.mod +++ b/go.mod @@ -10,6 +10,7 @@ require ( github.com/gen2brain/avif v0.4.0 github.com/gen2brain/go-fitz v1.24.14 github.com/gen2brain/go-unarr v0.2.3 + github.com/gen2brain/jpegli v0.3.1 github.com/gen2brain/jpegxl v0.4.1 github.com/gen2brain/webp v0.5.0 github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 diff --git a/go.sum b/go.sum index a89f562..49691f7 100644 --- a/go.sum +++ b/go.sum @@ -28,6 +28,10 @@ github.com/gen2brain/go-fitz v1.24.14 h1:09weRkjVtLYNGo7l0J7DyOwBExbwi8SJ9h8YPhw github.com/gen2brain/go-fitz v1.24.14/go.mod h1:0KaZeQgASc20Yp5R/pFzyy7SmP01XcoHKNF842U2/S4= github.com/gen2brain/go-unarr v0.2.3 h1:VwZg0P6Dc/8Uh51McjVhzUMg4wHwwbiyqjEFsFELc0c= github.com/gen2brain/go-unarr v0.2.3/go.mod h1:hoHheVuf0KT8/hfvkEL7GMwj2h7fq0lF72NdyySdr3c= +github.com/gen2brain/jpegli v0.3.0 h1:u4YKRql9Ab/5eVCrFX6p/YBcIzV9ka15mKMXgdw4nis= +github.com/gen2brain/jpegli v0.3.0/go.mod h1:6Dbgr+ni1IUBqGVOKHn8lY+6DvwSGfAfC7pPQiSK6uA= +github.com/gen2brain/jpegli v0.3.1 h1:KxarZ9oL1mVdtzyGAyLJFduEKCs4itD52aRmS9nAkYc= +github.com/gen2brain/jpegli v0.3.1/go.mod h1:6Dbgr+ni1IUBqGVOKHn8lY+6DvwSGfAfC7pPQiSK6uA= github.com/gen2brain/jpegxl v0.4.1 h1:jWaVp5GkXLJXjRvC+g0R9+uo+xoWiS7DYKxJ3n5gHL4= github.com/gen2brain/jpegxl v0.4.1/go.mod h1:zIIDnzh7WqG+z66zyzLWQ0M4AS5xi//pyJLgu32GB1o= github.com/gen2brain/webp v0.5.0 h1:nn3o0BtKltoFKX9rlDZG/Y/aWqNzUZVyXdB815yVNfU=