sprintf specifiers golang float go

specifiers - libraries golang



Golang Convertir imagen.Imagen a[] byte (2)

Tiene problemas para convertir una imagen. Imagen a [] byte. El punto problemático está envuelto en líneas de puntos.

image_data, err := mybucket.Get(key) if err != nil { panic(err.Error()) } // reset format of data []byte to image.Image original_image, _, err := image.Decode(bytes.NewReader(image_data)) new_image := resize.Resize(160, 0, original_image, resize.Lanczos3) - - - - - - - - - - - - - - - - - - - - - - - - - - - // reset format the image.Image to data []byte here var send_S3 []byte var byteWriter = bufio.NewWriter(send_S3) - - - - - - - - - - - - - - - - - - - - - - - - - - err = jpeg.Encode(byteWriter, new_image, nil) new_path := key + "_sm" err = mybucket.Put(new_path, send_S3, "image/jpg", "aclstring")

Básicamente, necesito que new_image esté en formato de [] byte para poder enviarlo a mi grupo de S3.

Gracias por la ayuda.


Agregando al código de Stephen, si está usando el SDK de aws s3 go para colocar un objeto, su código se vería así:

// create buffer buff := new(bytes.Buffer) // encode image to buffer err = png.Encode(buff, new_image) if err != nil { fmt.Println("failed to create buffer", err) } // convert buffer to reader reader := bytes.NewReader(buf.Bytes()) // use it in `PutObjectInput` putInput := s3.PutObjectInput{ Bucket: aws.String("my_bucket"), Body: reader, } // send response resp, err := svc.PutObject(&putInput)


Quieres un bytes. Buffer, no un bufio. Escritor. bytes.Buffer se usa cuando necesitas un escritor que escribe en la memoria. bufio.Writer solo almacena en caché los datos en la memoria antes de reenviarlos a otro escritor.

buf := new(bytes.Buffer) err := jpeg.Encode(buf, new_image, nil) send_s3 := buf.Bytes()