Sehr neu in Go (erstes einfaches Projekt, an dem ich gerade arbeite).
Frage: Wie bekomme ich ein Bild von URL und dann speichern Sie es auf meinem Computer?
Folgendes habe ich bisher:
%Vor% Wenn ich diesen Code ausführe, bekomme ich cannot use m (type image.Image) as type []byte in function argument
Ich gehe davon aus, dass ich Image.Image (Variable m
) in eine undefinierte Menge an Bytes konvertieren muss? Ist das die richtige Vorgehensweise?
Sie müssen die Datei nicht dekodieren. Kopieren Sie einfach den Antworttext in eine Datei, die Sie geöffnet haben. Hier ist das Geschäft im modifizierten Beispiel:
response.Body
ist ein Datenstrom und implementiert die Reader
-Schnittstelle - was bedeutet, dass Sie Read
nacheinander aufrufen können, als wäre es eine offene Datei. Writer
-Schnittstelle. Dies ist das Gegenteil - es ist ein Stream, den Sie Write
aufrufen können. io.Copy
"patcht" einen Reader und einen Writer, konsumiert den Reader Stream und schreibt seinen Inhalt in einen Writer. Dies ist eines meiner Lieblingsdinge über go - implizite Schnittstellen. Sie müssen nicht angeben, dass Sie eine Schnittstelle implementieren, Sie müssen sie nur implementieren, um sie in einem bestimmten Kontext zu verwenden. Dies ermöglicht das Mischen und Abgleichen von Code, der nicht über anderen Code, mit dem er interagiert, informiert werden muss.
Paket Haupt
%Vor% Was ist der Typ von response.Body
? Sie sollten das nur in ein []byte
konvertieren, wenn dies nicht der Fall ist, und dieses auf die Festplatte schreiben. Es gibt keinen Grund, die Klasse image
zu verwenden, es sei denn, Sie haben einen Grund, die Daten als Bild zu behandeln. Behandeln Sie die Daten einfach als eine Reihe von Bytes und schreiben Sie sie auf die Festplatte.
Tags und Links go