为了账号安全,请及时绑定邮箱和手机立即绑定

从url存储图像时如何编写RIFF块头?

从url存储图像时如何编写RIFF块头?

Go
当年话下 2023-06-12 17:22:25
我只是尝试从 url 下载 webp 图像,但是当我尝试处理存储的图像时,我发现了一些不同的东西。如果我从浏览器下载图像,它可以使用x/image/webp包解码,但如果我使用存储图像http.Get()然后创建一个新文件然后io.Copy()图像,它说:“缺少 RIFF 块头”我假设在使用 golang 代码存储它时需要编写一些 RIFF 块标头。func main(){    response, e := http.Get(URL)    if e != nil {        log.Fatal(e)    }    defer response.Body.Close()    //open a file for writing    file, err := os.Create('tv.webp')    if err != nil {        log.Fatal(err)    }    defer file.Close()    // Use io.Copy to just dump the response body to the file. This supports huge files    _, err = io.Copy(file, response.Body)    if err != nil {        log.Fatal(err)    }    fmt.Println("Success!")    imgData, err := os.Open("tv.webp")    if err != nil {        fmt.Println(err)        return    }    log.Printf("%+v", imgData)    image, err := webp.Decode(imgData)    if err != nil {        fmt.Println(err)        return    }    fmt.Println(image.Bounds())}
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

下载文件不是webp类型。这是png。


package main


import (

    "fmt"

    "image"

    "io"

    "log"

    "net/http"

    "os"


    _ "image/png"

)


func main() {

    response, e := http.Get("https://www.sony.com/is/image/gwtprod/0abe7672ff4c6cb4a0a4d4cc143fd05b?fmt=png-alpha")

    if e != nil {

        log.Fatal(e)

    }

    defer response.Body.Close()


    file, err := os.Create("dump")

    if err != nil {

        log.Fatal(err)

    }

    defer file.Close()


    _, err = io.Copy(file, response.Body)

    if err != nil {

        log.Fatal(err)

    }

    fmt.Println("Success!")


    imageFile, err := os.Open("dump")

    if err != nil {

        panic(err)

    }


    m, name, err := image.Decode(imageFile)

    if err != nil {

        panic(err)

    }


    fmt.Println("image type is ", name, m.Bounds())

}


查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号