Sobes.tech
Senior

Hogyan tárolódik egy kép a PostgreSQL-ben — ez valamilyen kódolás vagy számok halmaza? Hogyan tárolhatunk egy képet szövegként?

sobes.tech MI

Válasz az MI-től

A PostgreSQL-ben a kép általában bináris adatokként tárolódik bytea típusú mezőben vagy nagyobjektum (LOB) formájában. Ez nem egy szokásos értelemben vett kódolás, hanem egyszerűen egy bájtokból álló sorozat, amely a fájl tartalmát reprezentálja.

A kép szövegként való tárolásához Base64-be kódolhatja, ami a bináris adatokat ASCII karakterlánccá alakítja, amit szövegmezőben lehet tárolni. Ez a módszer azonban körülbelül 33%-kal növeli az adatok méretét.

Go nyelven például így lehet Base64-be kódolni egy képet:

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

Az adatbázisban ezt a sztringet text vagy varchar típusú mezőben lehet tárolni. Szükség esetén visszafejthető bináris formátumba.