mirror of
https://github.com/woodchen-ink/webp_server_go.git
synced 2025-07-18 13:42:02 +08:00
fix issue #4, add err return for webpEncoder
This commit is contained in:
parent
3380f63af5
commit
83a0aa420c
@ -3,6 +3,7 @@ package main
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"flag"
|
||||
"fmt"
|
||||
"image"
|
||||
@ -144,11 +145,14 @@ func main() {
|
||||
os.MkdirAll(DirAbsolutePath, os.ModePerm)
|
||||
|
||||
// cwebp -q 60 Cute-Baby-Girl.png -o Cute-Baby-Girl.webp
|
||||
|
||||
q, _ := strconv.ParseFloat(QUALITY, 32)
|
||||
webpEncoder(ImgAbsolutePath, WebpAbsolutePath, float32(q))
|
||||
err = webpEncoder(ImgAbsolutePath, WebpAbsolutePath, float32(q))
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
c.SendStatus(400)
|
||||
c.Send("Bad file!")
|
||||
return
|
||||
}
|
||||
|
||||
ImgNameCopy := string([]byte(ImgName))
|
||||
@ -209,11 +213,15 @@ func GetFileContentType(buffer []byte) string {
|
||||
return contentType
|
||||
}
|
||||
|
||||
func webpEncoder(p1, p2 string, quality float32) {
|
||||
func webpEncoder(p1, p2 string, quality float32) (err error) {
|
||||
// if convert fails, return error; success nil
|
||||
var buf bytes.Buffer
|
||||
var img image.Image
|
||||
|
||||
data, _ := ioutil.ReadFile(p1)
|
||||
data, err := ioutil.ReadFile(p1)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
contentType := GetFileContentType(data[:512])
|
||||
if strings.Contains(contentType, "jpeg") {
|
||||
img, _ = jpeg.Decode(bytes.NewReader(data))
|
||||
@ -221,12 +229,21 @@ func webpEncoder(p1, p2 string, quality float32) {
|
||||
img, _ = png.Decode(bytes.NewReader(data))
|
||||
}
|
||||
|
||||
if err := webp.Encode(&buf, img, &webp.Options{Lossless: true, Quality: quality}); err != nil {
|
||||
log.Println(err)
|
||||
if img == nil {
|
||||
log.Println("Image file is corrupted or not supported!")
|
||||
err = errors.New("image file is corrupted or not supported")
|
||||
return
|
||||
}
|
||||
if err := ioutil.WriteFile(p2, buf.Bytes(), 0666); err != nil {
|
||||
|
||||
if err = webp.Encode(&buf, img, &webp.Options{Lossless: true, Quality: quality}); err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
if err = ioutil.WriteFile(p2, buf.Bytes(), 0666); err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Println("Save to webp ok")
|
||||
return nil
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user