Sobes.tech
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.