問題:
嘗試從URL 擷取影像並儲存到檔案時,出現錯誤:「cannot use m (type image.Image) as type []byte in function
分析:
原始程式碼將影像轉換為Go image.Image 物件(m),它是影像在記憶體中的表示。 ) 函數需要一個位元組切片([]byte)。函數直接將回應正文複製到輸出檔。檢索影像並將回應儲存在回應中。在以下位置建立一個空白檔案/tmp/asdf.jpg。
額外注意:
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!") }此程式碼假設HTTP 回應包含有效的影像檔案。考慮使用專用的Go 圖像庫,例如如github.com/disintegration/imaging。
以上是如何在 Go 中有效地從 URL 下載並保存圖像?的詳細內容。更多資訊請關注PHP中文網其他相關文章!