Heim >Backend-Entwicklung >Golang >Wie löse ich den Fehler „M (Typ image.Image) kann nicht als Typ []Byte verwendet werden' beim Speichern von Bildern von URLs in Go?
So speichern Sie ein Bild von einer URL in eine Datei: Überwindung des Cannot Use m (type image.Image) as Type []byte Error
Das Abrufen eines Bildes von einer URL und das Speichern in einer Datei ist eine häufige Aufgabe in vielen Programmieranwendungen. In Go kann dies mithilfe der http- und image-Pakete erreicht werden. Beim Versuch, den Typ „image.Image“ an die Funktion „ioutil.WriteFile“ zu übergeben, kann jedoch ein Fehler auftreten.
Die Fehlermeldung „m (Typ image.Image) kann nicht als Typ []Byte in der Funktion verwendet werden.“ Argument“ gibt an, dass der Typ image.Image nicht direkt in eine Datei geschrieben werden kann. Dies liegt daran, dass die Funktion ioutil.WriteFile als zweites Argument ein Byte-Slice ([]Byte) erwartet.
Der richtige Weg, ein Bild in einer Datei in dieser Situation zu speichern, besteht darin, die Dekodierung des Bildes insgesamt zu vermeiden. Stattdessen können Sie den Antworttext, der die Bilddaten enthält, direkt in eine Datei kopieren.
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!") }
In diesem geänderten Code:
Das obige ist der detaillierte Inhalt vonWie löse ich den Fehler „M (Typ image.Image) kann nicht als Typ []Byte verwendet werden' beim Speichern von Bildern von URLs in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!