Sobes.tech
Senior

Πώς αποθηκεύεται μια εικόνα στο PostgreSQL — είναι κάποιο κωδικοποίηση ή μια σειρά αριθμών; Πώς αποθηκεύετε μια εικόνα ως κείμενο;

sobes.tech AI

Απάντηση από AI

Στο PostgreSQL, μια εικόνα αποθηκεύεται συνήθως ως δυαδικά δεδομένα σε ένα πεδίο τύπου bytea ή σε ένα μεγάλο αντικείμενο (LOB). Αυτό δεν είναι κωδικοποίηση με την κλασική έννοια, αλλά απλώς μια ακολουθία bytes που αντιπροσωπεύει το περιεχόμενο του αρχείου.

Για να αποθηκεύσετε την εικόνα ως κείμενο, μπορείτε να την κωδικοποιήσετε σε Base64, το οποίο μετατρέπει τα δυαδικά δεδομένα σε μια ASCII συμβολοσειρά που μπορεί να αποθηκευτεί σε ένα πεδίο κειμένου. Ωστόσο, αυτή η μέθοδος αυξάνει το μέγεθος των δεδομένων περίπου κατά 33%.

Παράδειγμα αποθήκευσης μιας εικόνας σε Base64 σε 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)
}

Στη βάση δεδομένων, αυτή η συμβολοσειρά μπορεί να αποθηκευτεί σε ένα πεδίο τύπου text ή varchar. Αν χρειάζεται, μπορεί να αποκωδικοποιηθεί ξανά σε δυαδική μορφή.