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图片
gifpng图片需要导入相应"image/gif""image/png"

如这三种图片类型都用到,需要都导入

import (
	_ "image/gif"
	_ "image/jpeg"
	_ "image/png"
)

Guess you like

Origin blog.csdn.net/weixin_43874301/article/details/121117213
Recommended