Sobes.tech
Senior

Kuidas salvestatakse pilt PostgreSQL-is — kas see on mingi kodeering või arvude kogum? Kuidas salvestada pilt tekstina?

sobes.tech AI

Vastus AI-lt

PostgreSQL-is tavaliselt pilt salvestatakse binaarandmetena bytea väljal või suure objekti (LOB) kujul. See ei ole kodeering tavalises mõttes, vaid lihtsalt järjestus baitidest, mis esindavad faili sisu.

Pildi salvestamiseks tekstina saab seda kodeerida Base64-ks, mis muudab binaarandmed ASCII-stringiks, mida saab salvestada tekstiväljal. Kuid see meetod suurendab andmete mahtu umbes 33%.

Näide, kuidas Go keeles salvestada pilt Base64-ks:

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)
}

Andmebaasis saab seda stringi salvestada text või varchar tüüpi väljal. Vajadusel saab seda uuesti dekodeerida binaarformaati.