Sobes.tech
Senior

როგორ ინახება სურათი PostgreSQL-ში — ეს რაიმე კოდირებაა თუ რიცხვების ნაკრები? როგორ ინახება სურათი ტექსტის სახით?

sobes.tech AI

პასუხი AI-სგან

PostgreSQL-ში სურათი ჩვეულებრივ ინახება ბინარული მონაცემების სახით bytea ტიპის ველზე ან დიდ ობიექტზე (LOB). ეს არ არის ჩვეულებრივი კოდირება, არამედ უბრალოდ ბაიტების სერია, რომელიც წარმოადგენს ფაილის შიგთავსს.

სურათის შენახვა ტექსტის სახით შესაძლებელია Base64-ით კოდირებით — ეს გარდაქმნის ბინარულ მონაცემებს ASCII სტრიქონად, რომელიც შეიძლება შეინახოს ტექსტურ ველზე. თუმცა, ასეთი მეთოდი დაახლოებით 33%-ით ზრდის მონაცემების ზომას.

Go-ში სურათის Base64-ით კოდირების მაგალითი:

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 ტიპის ველზე. საჭიროების შემთხვევაში, ის შეიძლება დეკოდირებული იყოს ისევ ბინარულ ფორმატში.