前置安装:
go get github.com/chai2010/webp
代码实例:
package main
import (
"bytes"
"image"
"image/gif"
"image/jpeg"
"image/png"
"io/ioutil"
"os"
"github.com/chai2010/webp"
"golang.org/x/image/bmp"
)
func main() {
// 图片路径
file_name := `./test.webp`
// 读取图片
old_file, err := os.Open(file_name)
if err != nil {
panic(err)
}
// 识别图片类型
file, image_type, _ := image.Decode(old_file)
// 获取图片的类型
switch image_type {
case `jpeg`:
println(`这是 jpg 文件`)
new_file, _ := os.Create(`./_test.jpg`)
jpeg.Encode(new_file, file, nil)
new_file.Close()
case `png`:
println(`这是 png 文件`)
new_file, _ := os.Create(`./_test.png`)
png.Encode(new_file, file)
new_file.Close()
case `gif`:
println(`这是 gif 文件`)
new_file, _ := os.Create(`./_test.gif`)
gif.Encode(new_file, file, nil)
new_file.Close()
case `bmp`:
println(`这是 bmp 文件`)
new_file, _ := os.Create(`./_test.bmp`)
bmp.Encode(new_file, file)
new_file.Close()
default:
data, _ := ioutil.ReadFile(file_name)
// 尝试以 webp 进行解码
m, err := webp.Decode(bytes.NewReader(data))
if err == nil {
println(`这是 webp 文件`)
var buf bytes.Buffer
webp.Encode(&buf, m, nil)
ioutil.WriteFile(`./_test.webp`, buf.Bytes(), 0666)
} else {
println(`不是 图片文件!`)
}
}
old_file.Close()
}
网友评论