Sobes.tech
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.