Senior
Jak przechowywana jest grafika w PostgreSQL — czy to jakaś kodowanie czy zbiór cyfr? Jak przechowywać grafikę w formie tekstu?
sobes.tech AI
Odpowiedź od AI
W PostgreSQL obrazek jest zwykle przechowywany jako dane binarne w polu typu bytea lub w obiekcie dużym (LOB). To nie jest kodowanie w tradycyjnym sensie, lecz po prostu sekwencja bajtów reprezentujących zawartość pliku.
Aby przechowywać obraz jako tekst, można go zakodować w Base64 — co zamienia dane binarne na ciąg ASCII, który można zapisać w polu tekstowym. Jednak taka metoda zwiększa rozmiar danych o około 33%.
Przykład przechowywania obrazu w Base64 w 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)
}
W bazie danych można zapisać ten ciąg w polu typu text lub varchar. W razie potrzeby można go zdekodować z powrotem do formatu binarnego.