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.