Initial commit
commit
4b6fe76fc8
@ -0,0 +1,5 @@
|
|||||||
|
module github.com/velizarov.ru/cli/tool/image
|
||||||
|
|
||||||
|
go 1.13
|
||||||
|
|
||||||
|
require github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect
|
@ -0,0 +1,2 @@
|
|||||||
|
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
|
||||||
|
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
|
@ -0,0 +1,93 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"image"
|
||||||
|
"image/jpeg"
|
||||||
|
_ "image/jpeg"
|
||||||
|
_ "image/png"
|
||||||
|
"io/fs"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/nfnt/resize"
|
||||||
|
)
|
||||||
|
|
||||||
|
func resizeImage(originalImage *bytes.Buffer, width uint, ext string) (*bytes.Buffer, error) {
|
||||||
|
image, _, err := image.Decode(originalImage)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
//newImage := resize.Thumbnail(width, width, image, resize.NearestNeighbor)
|
||||||
|
newImage := resize.Resize(width, 0, image, resize.NearestNeighbor)
|
||||||
|
|
||||||
|
out := new(bytes.Buffer)
|
||||||
|
/*
|
||||||
|
switch ext {
|
||||||
|
case ".png":
|
||||||
|
png.Encode(out, newImage)
|
||||||
|
case ".jpg", ".jpeg":
|
||||||
|
}*/
|
||||||
|
jpeg.Encode(out, newImage, nil)
|
||||||
|
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
//out := os.Stdout
|
||||||
|
if !(len(os.Args) == 3) {
|
||||||
|
panic("usage go run main.go . [width]")
|
||||||
|
}
|
||||||
|
path := os.Args[1]
|
||||||
|
|
||||||
|
width, err := strconv.ParseUint(os.Args[2], 10, 0)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
panic("Wrong value for image width")
|
||||||
|
}
|
||||||
|
|
||||||
|
files, err := os.ReadDir(path)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
panic("Wrong value for image width")
|
||||||
|
}
|
||||||
|
|
||||||
|
err = os.MkdirAll("output"+string(os.PathSeparator)+strconv.FormatUint(width, 10), 0777)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, file := range files {
|
||||||
|
if !file.IsDir() {
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
fmt.Print(file.Name(), " => ")
|
||||||
|
switch filepath.Ext(file.Name()) {
|
||||||
|
case ".png", ".jpg", ".jpeg":
|
||||||
|
originalImage, err := ioutil.ReadFile(path + string(os.PathSeparator) + file.Name())
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
newImage, err := resizeImage(bytes.NewBuffer(originalImage), uint(width), filepath.Ext(file.Name()))
|
||||||
|
|
||||||
|
filename := file.Name()
|
||||||
|
filename = strings.Replace(filename, ".png", ".jpg", 1)
|
||||||
|
filename = strings.Replace(filename, ".jpeg", ".jpg", 1)
|
||||||
|
filename = "output" + string(os.PathSeparator) + strconv.FormatUint(width, 10) + string(os.PathSeparator) + filename
|
||||||
|
fmt.Println(filename)
|
||||||
|
err = os.WriteFile(filename, newImage.Bytes(), fs.ModePerm)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue