golang 实现图片(gif/jpeg/png)转webp
新建转换工具类
util/webpUtil.go
package utilimport ("bytes""github.com/chai2010/webp""image"_ "image/gif"_ "image/jpeg"_ "image/png""io/ioutil""log"
)// ImageBytes2WebpBytes 将图片转为webp
// inputFile 图片字节切片(仅限gif,jpeg,png格式)
// outputFile webp图片字节切片
// 图片质量
func ImageBytes2WebpBytes(input []byte, quality float32) ([]byte, error) {//解析图片img, format, err := image.Decode(bytes.NewBuffer(input))if err != nil {log.Println("图片解析失败")return nil, err}log.Println("原始图片格式:", format)//转为webpwebpBytes, err := webp.EncodeRGBA(img, quality)if err != nil {log.Println("解析图片失败", err)return nil, err}return webpBytes, nil
}// Image2Webp 将图片转为webp
// inputFile 图片路径(仅限gif,jpeg,png格式)
// outputFile 图片输出路径
// 图片质量
func Image2Webp(inputFile string, outputFile string, quality float32) error {// 读取文件fileBytes, err := ioutil.ReadFile(inputFile)if err != nil {log.Println("读取文件失败:", err)return err}webpBytes, err := ImageBytes2WebpBytes(fileBytes, quality)if err != nil {log.Println("解析图片失败", err)return err}if err = ioutil.WriteFile(outputFile, webpBytes, 0666); err != nil {log.Println("图片写入失败", err)return err}originalSize := len(fileBytes)webpSize := len(webpBytes)log.Printf("原始大小:%d k,转换后大小:%d k,压缩比:%d %% \n", originalSize/1024, webpSize/1024, webpSize*100/originalSize)return nil
}
新建main文件
main.go
package mainimport ("os""webpTools/util"
)func main() {input := ".\\input\\aa.jpg"output := ".\\input\\aaaa.webp"quality := 50err := util.Image2Webp(input, output, float32(quality))if err != nil {log.Print("图片转换失败:", err.Error())os.Exit(1)} else {log.Print("转换完成")}}
控制台输出日志
2023/08/25 17:31:26 原始图片格式: jpeg
2023/08/25 17:31:27 原始大小:500 k,转换后大小:69 k,压缩比:13 %
2023/08/25 17:31:27 转换完成
出现报错
cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in %
按照说明配置gcc: qcBlog go报错 cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in %
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
