Golang从URL加载图片遇‘image: unknown format’错误的解决
解决Golang中加载图片时"image: unknown format"错误
在Golang中通过URL加载图片并解析为image.Image格式时,遇到如下错误:
"image: unknown format"
原实现代码如下:
import "image" url := "https://i.imgur.com/m1UIjW1.jpg" func loadImageFromURL(URL string) (image.Image, error) { //Get the response bytes from the url response, err := http.Get(URL) if err != nil { return nil, err } defer response.Body.Close() if response.StatusCode != 200 { return nil, errors.New("received non 200 response code") } img, _, err := image.Decode(response.Body) if err != nil { return nil, err } return img, nil }
问题原因
Golang标准库的image包仅定义了图片处理的基础接口,并未默认包含具体图片格式的解码器。要解析JPEG格式图片,必须显式导入image/jpeg包——即使不需要直接使用包内的任何标识符,也要通过空白标识符_导入,以此触发包的初始化逻辑,将JPEG解码器注册到image包中。
修复后的代码
import ( "errors" "image" "net/http" _ "image/jpeg" // 注册JPEG格式解码器 ) func loadImageFromURL(URL string) (image.Image, error) { response, err := http.Get(URL) if err != nil { return nil, err } defer response.Body.Close() if response.StatusCode != 200 { return nil, errors.New("received non 200 response code") } img, _, err := image.Decode(response.Body) if err != nil { return nil, err } return img, nil }
内容的提问来源于stack exchange,提问作者Arjen
相关产品推荐
相关产品推荐

