From f33c095094c4066420715e279dc84edb8f3be166 Mon Sep 17 00:00:00 2001 From: celogeek <65178+celogeek@users.noreply.github.com> Date: Sun, 23 Jun 2024 11:28:45 +0200 Subject: [PATCH] test mozJpeg --- go.mod | 1 + go.sum | 2 ++ internal/pkg/epubzip/image.go | 12 +++++++++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index d3f09c8..7348aa2 100644 --- a/go.mod +++ b/go.mod @@ -23,6 +23,7 @@ require ( github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/stretchr/testify v1.9.0 // indirect + github.com/viam-labs/go-libjpeg v0.3.1 // indirect golang.org/x/net v0.25.0 // indirect golang.org/x/sys v0.20.0 // indirect golang.org/x/term v0.20.0 // indirect diff --git a/go.sum b/go.sum index bbdb40d..1a2bce3 100644 --- a/go.sum +++ b/go.sum @@ -39,6 +39,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e h1:IWllFTiDjjLIf2oeKxpIUmtiDV5sn71VgeQgg6vcE7k= github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e/go.mod h1:d7u6HkTYKSv5m6MCKkOQlHwaShTMl3HjqSGW3XtVhXM= +github.com/viam-labs/go-libjpeg v0.3.1 h1:J/byavXHFqRI1PFPrnPbP+wFCr1y+Cn1CwKXrORCPD0= +github.com/viam-labs/go-libjpeg v0.3.1/go.mod h1:b0ISpf9lJv9MO1h1gXAmSA/osG19cKGYjfYc6aeEjqs= golang.org/x/image v0.16.0 h1:9kloLAKhUufZhA12l5fwnx2NZW39/we1UhBesW433jw= golang.org/x/image v0.16.0/go.mod h1:ugSZItdV4nOxyqp56HmXwH0Ry0nBCpjnZdpDaIHdoPs= golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= diff --git a/internal/pkg/epubzip/image.go b/internal/pkg/epubzip/image.go index df87c4f..a5c1889 100644 --- a/internal/pkg/epubzip/image.go +++ b/internal/pkg/epubzip/image.go @@ -10,6 +10,8 @@ import ( "image/jpeg" "image/png" "time" + + mozJpeg "github.com/viam-labs/go-libjpeg/jpeg" ) type Image struct { @@ -28,7 +30,15 @@ func CompressImage(filename string, format string, img image.Image, quality int) case "png": err = png.Encode(&data, img) case "jpeg": - err = jpeg.Encode(&data, img, &jpeg.Options{Quality: quality}) + err = mozJpeg.Encode(&data, img, &mozJpeg.EncoderOptions{ + Quality: quality, + OptimizeCoding: true, + ProgressiveMode: true, + DCTMethod: mozJpeg.DCTFloat, + }) + if err != nil && err.Error() == "unsupported image type" { + err = jpeg.Encode(&data, img, &jpeg.Options{Quality: quality}) + } default: err = fmt.Errorf("unknown format %q", format) }