如何将图片从 URL 保存到文件:克服无法使用 m (type image.Image) 作为 Type []byte 错误
从 URL 获取图像并将其保存到文件是许多编程应用程序中的常见任务。在 Go 中,这可以使用 http 和 image 包来实现。但是,在尝试将 image.Image 类型传递给 ioutil.WriteFile 函数时,可能会遇到错误。
错误消息,“cannot use m (type image.Image) as type []byte in function argument,” 表示 image.Image 类型不能直接写入文件。这是因为 ioutil.WriteFile 函数需要一个字节切片 ([]byte) 作为其第二个参数。
在这种情况下将图像保存到文件的正确方法是完全避免解码图像。相反,您可以直接将包含图像数据的响应正文复制到文件中。
package main import ( "fmt" "io" "log" "net/http" "os" ) func main() { url := "http://i.imgur.com/m1UIjW1.jpg" // don't worry about errors response, e := http.Get(url) if e != nil { log.Fatal(e) } 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 保存图像时出现'cannot use m (type image.Image) as Type []byte”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!