Go言語で画像をダウンロードし、それを扱うためにImage構造体に変換するコードを作成したのですが、以下のエラーのためできませんでした。

func getImage(url string) (image.Image, []byte, error) {
    resp, err := http.Get(url)
    if err != nil {
        return nil, nil, err
    }
    defer resp.Body.Close()
    data, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return nil, nil, err
    }

    buf := bytes.NewBuffer(data)

    img, _, err := image.Decode(buf)
    if err != nil {
        return nil, nil, err
    }
    return img, data, nil
}

エラー

image: unknown format

これは上記コードのimage.Decodeで起きています。

今年の4月までは上記コードが動いていたのですが、今動かしたところエラーが出ました。Goのバージョンの違いだと思いますが、どのように修正すれば動くようにできるのでしょうか。

image/jpegimage/pngはインポートできています。

問題を再現可能なコード

package main

import (
    "bytes"
    "image"
    _ "image/jpeg"
    "io/ioutil"
    "log"
    "net/http"
)

func main() {
    doneCh := make(chan bool, 10)
    for i := 0; i < 10; i++ {
        go getImage("http://safebooru.org/images/1715/d55b7029064f477ab3838c71456010896444d851.jpg", doneCh)
    }
    for i := 0; i < 10; i++ {
        <-doneCh
    }
}

func getImage(url string, doneCh chan bool) {
    resp, err := http.Get(url)
    if err != nil {
        log.Fatal("http.Get failed", err)
    }
    if resp.StatusCode != 200 {
        log.Fatal("StatusCode is not 200", resp.StatusCode)
    }
    defer resp.Body.Close()
    data, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatal("ioutil.ReadAll failed", err)
    }
    buf := bytes.NewBuffer(data)
    img, _, err := image.Decode(buf)
    if err != nil {
        log.Fatal("image.Decode failed", err)
    }
    _ = img
    log.Printf("OK: Bounds=%+v\n", img.Bounds())

    doneCh <- true

}