Go image: unknown format 错误解决
当使用image.Decode处理图片文件时,如报image: unknown format 错误。
func GetImgData(url string) ([]byte, error) {
resp, err := http.Get(url)
if err != nil {
log.Errorf("[IMG_DATA] getImage url:%s, error:%v", url, err)
return nil, err
}
defer resp.Body.Close()
if resp.StatusCode/100 >= 4 {
log.Errorf("[IMG_DATA] getImage get a abnormal response code:%d, text:%s, url:%s", resp.StatusCode, resp.Status, url)
return nil, errors.New("response code is not 2xx.")
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Errorf("[IMG_DATA] ReadAll(%s) error=%v", url, err)
return nil, err
}
return body, nil
}
错误处
var imgData []byte // 已经通过网络请求获取
imgData, err = GetImgData(imgURLStr)
// 获取原图大小
im, _, err := image.DecodeConfig(bytes.NewReader(imgData))
if err != nil {
log.Errorf("[ORIGIN_IMAGE] Image DecodeConfig error:%s", err)
}
stat_item.OrigWidth = im.Width
stat_item.OrigHeight = im.Height
执行以上代码会报
error:image: unknown format
这是因为忘记引入包import _ "image/jpeg"
,image包不知道怎么Decode图片,需要导入"image/jpeg"
去解码jpg图片
gif
和png
图片需要导入相应"image/gif"
,"image/png"
如这三种图片类型都用到,需要都导入
import (
_ "image/gif"
_ "image/jpeg"
_ "image/png"
)