Sobes.tech
Senior

Ako je slika shranjena v PostgreSQL — je to kakšna kodiranje ali niz številk? Kako shraniti sliko kot besedilo?

sobes.tech AI

Odpoveď od AI

V PostgreSQL sa obrázok zvyčajne uložený ako binárne dáta v poli typu bytea alebo v objekte veľkého objemu (LOB). Nie je to kódovanie v bežnom zmysle, ale jednoducho sekvencia bajtov reprezentujúcich obsah súboru.

Na uloženie obrázka ako textu ho môžete zakódiť do Base64, čo prevedie binárne dáta na ASCII reťazec, ktorý možno uložiť do textového poľa. Tento spôsob však zväčšuje veľkosť dát približne o 33 %.

Príklad uloženia obrázka v Base64 v 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)
}

V databáze možno tento reťazec uložiť do poľa typu text alebo varchar. Ak je potrebné, môže byť dekódovaný späť do binárneho formátu.