fix issue #4, add err return for webpEncoder

This commit is contained in:
Benny~ 2020-02-26 20:13:52 +08:00
parent 3380f63af5
commit 83a0aa420c
No known key found for this signature in database
GPG Key ID: 6CD0DBDA5235D481

View File

@ -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
}