问题:
尝试从 URL 检索图像并保存到文件时,出现错误:“cannot use m (type image.Image) as type []byte in function
分析:
原始代码将图像转换为 Go image.Image 对象(m),它是图像在内存中的表示。但是,ioutil.WriteFile() 函数需要一个字节切片 ([]byte)。
解决方案:
而不是将图像转换为内存中的表示形式,我们可以使用 io.Copy 函数直接将响应正文复制到输出文件。下面是代码的修改版本:
package main import ( "fmt" "io" "log" "net/http" "os" ) func main() { url := "http://i.imgur.com/m1UIjW1.jpg" // don't worry about errors response, err := http.Get(url) if err != nil { log.Fatal(err) } defer response.Body.Close() //open a file for writing file, err := os.Create("/tmp/asdf.jpg") 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!") }
说明:
额外注意:
以上是如何在 Go 中高效地从 URL 下载并保存图像?的详细内容。更多信息请关注PHP中文网其他相关文章!