介绍一个获取图片主色调GO API项目img2color-go。在此项目中的一次Pr修复中改用了imaging进行图像解码。

MeuiCat博客的图像格式全采用的是webp,在某一次浏览时惊奇发现提取色函数报错了。打开调试一看是最新的Pr中使用的imaging并不支持webp图像格式的解码。

解决方法

可以查看在此之前的提交使用的是github.com/chai2010/webp。mod也有这个的写入下,在img2color.go中extractMainColor函数重新将webp后缀图像格式进行webp的处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package handler

import (
···

"golang.org/x/image/webp" // webp格式
)

···

func extractMainColor(imgURL string) (string, error) {

···
var img image.Image

contentType := resp.Header.Get("Content-Type")
switch contentType {
// imaging不支持webp处理,将其改用webp
case "image/webp":
img, err = webp.Decode(resp.Body)
default:
img, err = imaging.Decode(resp.Body)
}

if err != nil {
return "", err
}

···

}

贡献