0
点赞
收藏
分享

微信扫一扫

Go image: unknown format 错误解决


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"
)


举报

相关推荐

0 条评论