Senior
Como é que uma imagem é armazenada no PostgreSQL — é alguma codificação ou um conjunto de números? Como armazenar uma imagem como texto?
sobes.tech IA
Resposta da IA
No PostgreSQL, a imagem é normalmente armazenada como dados binários num campo do tipo bytea ou num objeto grande (LOB). Isto não é uma codificação no sentido habitual, mas simplesmente uma sequência de bytes que representam o conteúdo do ficheiro.
Para armazenar a imagem como texto, pode-se codificá-la em Base64, o que converte os dados binários numa cadeia ASCII que pode ser guardada num campo de texto. No entanto, este método aumenta o tamanho dos dados em cerca de 33%.
Exemplo de armazenamento de uma imagem em Base64 em Go:
import (
"encoding/base64"
"io/ioutil"
"log"
)
func encodeImageToBase64(path string) string {
data, err := ioutil.ReadFile(path)
if err != nil {
log.Fatal(err)
}
return base64.StdEncoding.EncodeToString(data)
}
Na base de dados, esta cadeia pode ser guardada num campo do tipo text ou varchar. Se necessário, pode ser decodificada de volta para o formato binário.