Rename CompressLevel to Quality for clarity
This commit is contained in:
parent
03fa819716
commit
417a253ac7
12
README.md
12
README.md
|
@ -4,16 +4,22 @@ imageoptimizer is a tool for bulk compression og JPG images. It will re-compress
|
||||||
more than the requested percentage difference, default is 25%. By defaul it operated in a "dry run" mode where images are not replaced
|
more than the requested percentage difference, default is 25%. By defaul it operated in a "dry run" mode where images are not replaced
|
||||||
but individual and total savings are reported at the end, unless you supply the '-replace' flag.
|
but individual and total savings are reported at the end, unless you supply the '-replace' flag.
|
||||||
|
|
||||||
|
# why?
|
||||||
|
|
||||||
|
Poorly optimized images in most contexts waste space and bandwidth unnecessarily. JPEG compression was designed to highly optimize photos with
|
||||||
|
little or no visually identifiable differences in default conditions, and for scenarios where absolute quality is less important it can compress
|
||||||
|
even farther. Generally quality levels below 75 are where you start to notice a difference.
|
||||||
|
|
||||||
# usage
|
# usage
|
||||||
|
|
||||||
Recursively check all images starting from the current path. Calculate actions and total svings but don't make any changes.
|
Recursively check all images starting from the current path. Calculate actions and total svings but don't make any changes.
|
||||||
|
|
||||||
```
|
```
|
||||||
imageoptimizer -recursive -compresslevel 85 -diff 25
|
imageoptimizer -recursive -diff 25
|
||||||
```
|
```
|
||||||
|
|
||||||
Replace images in the current path with a compressed version if compressing at 80% reduces file size by at least 30%
|
Replace images in the current path with a compressed version if compressing at 80% quality reduces file size by at least 30%
|
||||||
|
|
||||||
```
|
```
|
||||||
imageoptimizer -compresslevel --replace --diff 30
|
imageoptimizer -quality 80 --replace --diff 30
|
||||||
```
|
```
|
||||||
|
|
8
main.go
8
main.go
|
@ -13,7 +13,7 @@ import (
|
||||||
type config struct {
|
type config struct {
|
||||||
Recursive bool
|
Recursive bool
|
||||||
Diff uint
|
Diff uint
|
||||||
CompressLevel uint
|
Quality uint
|
||||||
Replace bool
|
Replace bool
|
||||||
StartingPath string
|
StartingPath string
|
||||||
Quiet bool
|
Quiet bool
|
||||||
|
@ -31,7 +31,7 @@ func main() {
|
||||||
var c config
|
var c config
|
||||||
flag.BoolVar(&c.Recursive, "recursive", false, "Process folders recursively (default false).")
|
flag.BoolVar(&c.Recursive, "recursive", false, "Process folders recursively (default false).")
|
||||||
flag.UintVar(&c.Diff, "diff", 25, "Percent difference required to replace original image.")
|
flag.UintVar(&c.Diff, "diff", 25, "Percent difference required to replace original image.")
|
||||||
flag.UintVar(&c.CompressLevel, "compresslevel", 85, "JPG compression level.")
|
flag.UintVar(&c.Quality, "quality", 85, "JPG compression quality level.")
|
||||||
flag.BoolVar(&c.Quiet, "quiet", false, "Less output - don't print per-file detail")
|
flag.BoolVar(&c.Quiet, "quiet", false, "Less output - don't print per-file detail")
|
||||||
flag.StringVar(&c.StartingPath, "startingpath", ".", "Start from this path instead of current working dir")
|
flag.StringVar(&c.StartingPath, "startingpath", ".", "Start from this path instead of current working dir")
|
||||||
flag.BoolVar(&c.Replace, "replace", false, "Replace with compressed versions if criteria are met. Otheriwse, just test and report, don't replace any images. (default false)")
|
flag.BoolVar(&c.Replace, "replace", false, "Replace with compressed versions if criteria are met. Otheriwse, just test and report, don't replace any images. (default false)")
|
||||||
|
@ -42,7 +42,7 @@ func main() {
|
||||||
fmt.Println("Fatal: diff out of range (-99)")
|
fmt.Println("Fatal: diff out of range (-99)")
|
||||||
fail = true
|
fail = true
|
||||||
}
|
}
|
||||||
if c.CompressLevel > 99 {
|
if c.Quality > 99 {
|
||||||
fmt.Println("Fatal: compresslevel out of range (1-99)")
|
fmt.Println("Fatal: compresslevel out of range (1-99)")
|
||||||
fail = true
|
fail = true
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ func doSingleImage(f string, c config, s stats) stats {
|
||||||
fmt.Printf("Couldn't open out temprary file: %s\n", err.Error())
|
fmt.Printf("Couldn't open out temprary file: %s\n", err.Error())
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
err = jpeg.Encode(out, orig, &jpeg.Options{Quality: int(c.CompressLevel)})
|
err = jpeg.Encode(out, orig, &jpeg.Options{Quality: int(c.Quality)})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error re-encoding image %s: %s\n", f, err.Error())
|
fmt.Printf("Error re-encoding image %s: %s\n", f, err.Error())
|
||||||
return s
|
return s
|
||||||
|
|
Loading…
Reference in New Issue