Use jpegli for smaller files

This commit is contained in:
Milan Nikolic
2024-11-03 19:05:02 +01:00
parent 622c82a9df
commit 5f5fa2bb80
3 changed files with 13 additions and 2 deletions

View File

@@ -8,7 +8,6 @@ import (
"fmt" "fmt"
"image" "image"
_ "image/gif" _ "image/gif"
"image/jpeg"
"image/png" "image/png"
"io" "io"
"os" "os"
@@ -20,6 +19,7 @@ import (
"sync/atomic" "sync/atomic"
"github.com/gen2brain/avif" "github.com/gen2brain/avif"
"github.com/gen2brain/jpegli"
"github.com/gen2brain/jpegxl" "github.com/gen2brain/jpegxl"
"github.com/gen2brain/webp" "github.com/gen2brain/webp"
"github.com/jsummers/gobmp" "github.com/jsummers/gobmp"
@@ -504,7 +504,13 @@ func (c *Converter) imageEncode(img image.Image, w io.Writer) error {
case "tiff": case "tiff":
err = tiff.Encode(w, img, &tiff.Options{Compression: tiff.Uncompressed}) err = tiff.Encode(w, img, &tiff.Options{Compression: tiff.Uncompressed})
case "jpeg": 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": case "webp":
err = webp.Encode(w, img, webp.Options{Quality: c.Opts.Quality, Method: webp.DefaultMethod}) err = webp.Encode(w, img, webp.Options{Quality: c.Opts.Quality, Method: webp.DefaultMethod})
case "avif": case "avif":

1
go.mod
View File

@@ -10,6 +10,7 @@ require (
github.com/gen2brain/avif v0.4.0 github.com/gen2brain/avif v0.4.0
github.com/gen2brain/go-fitz v1.24.14 github.com/gen2brain/go-fitz v1.24.14
github.com/gen2brain/go-unarr v0.2.3 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/jpegxl v0.4.1
github.com/gen2brain/webp v0.5.0 github.com/gen2brain/webp v0.5.0
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25

4
go.sum
View File

@@ -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-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 h1:VwZg0P6Dc/8Uh51McjVhzUMg4wHwwbiyqjEFsFELc0c=
github.com/gen2brain/go-unarr v0.2.3/go.mod h1:hoHheVuf0KT8/hfvkEL7GMwj2h7fq0lF72NdyySdr3c= 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 h1:jWaVp5GkXLJXjRvC+g0R9+uo+xoWiS7DYKxJ3n5gHL4=
github.com/gen2brain/jpegxl v0.4.1/go.mod h1:zIIDnzh7WqG+z66zyzLWQ0M4AS5xi//pyJLgu32GB1o= github.com/gen2brain/jpegxl v0.4.1/go.mod h1:zIIDnzh7WqG+z66zyzLWQ0M4AS5xi//pyJLgu32GB1o=
github.com/gen2brain/webp v0.5.0 h1:nn3o0BtKltoFKX9rlDZG/Y/aWqNzUZVyXdB815yVNfU= github.com/gen2brain/webp v0.5.0 h1:nn3o0BtKltoFKX9rlDZG/Y/aWqNzUZVyXdB815yVNfU=