Heim >Backend-Entwicklung >Golang >Wie konvertiere ich ein Golang „image.Image' in ein „[]Byte' für den S3-Upload?
Konvertieren eines Bildes von image.Image in das []Byte-Format in Golang
Diese Frage bezieht sich auf die Konvertierung eines als Bild dargestellten Bildes. Bildobjekt zu einem Byte-Array, dargestellt als Typ []byte in Golang. Die besondere Herausforderung wird im bereitgestellten Code-Snippet deutlich, in dem der Konvertierungsschritt mit gepunkteten Linien markiert ist.
// ... original_image, _, err := image.Decode(bytes.NewReader(image_data)) new_image := resize.Resize(160, 0, original_image, resize.Lanczos3) // Convert the image.Image to []byte here new_path := key + "_sm" err = mybucket.Put(new_path, send_S3, "image/jpg", "aclstring")
Um das Problem zu beheben, soll das geänderte Bild, das in new_image gespeichert ist, in ein umgewandelt werden Byte-Array, sodass es über die Put-Funktion an den S3-Bucket übertragen werden kann.
Die Abhilfe besteht in der Verwendung des Typs bytes.Buffer, der einen In-Memory-Puffer bietet zum Schreiben von Daten. Dieser Puffer dient als Ziel für die JPEG-kodierten Bilddaten. Im Gegensatz dazu speichert der zuvor verwendete bufio.Writer lediglich Daten zwischen, bevor er sie an einen zugrunde liegenden Writer weitergibt, ohne die Daten im Speicher anzusammeln.
So sollte der Code angepasst werden:
buf := new(bytes.Buffer) err := jpeg.Encode(buf, new_image, nil) send_s3 := buf.Bytes()
Dieser aktualisierte Code verwendet einen bytes.Buffer, um die JPEG-codierten Bilddaten im Speicher zu sammeln, die dann durch Aufrufen der Bytes-Methode im Puffer als Byte-Array abgerufen werden. Dieses Byte-Array kann nun an die Put-Funktion übergeben werden, um das Bild in den S3-Bucket hochzuladen.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich ein Golang „image.Image' in ein „[]Byte' für den S3-Upload?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!