Bild in datenbank speichern

Hat schon mal jemand ausprobiert, was der effizienteste Weg ist, um ein Bild in der Datanbank zu sichern?

bisher mache ich das so:
dim m As MemoryBlock = pic.GetData(Picture.FormatPNG,picture.QualityHigh)
rs.field(“picture”).StringValue=EncodeBase64(m) // picture ist ein binary feld

Lass das EncodeBase64 weg.

Ich empfehle, Bilder am besten gar nicht in einer Datenbank zu speichern. Besser Verweis des Pfads & Dateinamens als Text in db speichern. Für die Vorschau verkleinerte zweite Datei erstellen (Thumbnail, z.B. 256x256 Pixel, Filter nicht vergessen). Ggf. eigene Server-App für den Transport der Vorschau- bzw. Originalbilder auf den Client verwenden.

PS: wir beschäftigen uns seit über 20 Jahren mit dem Speichern von medizinischen Bildern und haben wahrscheinlich schon alles erlebt. :wink:

Grüße

es geht tatschlich erst mal um Bilder die ich auf 300 Pixel Breite reduziere und dann mit 80% speichere… da hat ein Bild gerade mal noch 180 kb, das drfte doch kein Problem darstellen…

Ich habe schon 10 Jahre Blder in meiner DB, das ist lokal kein Problem, sofern sie eine bestimmte Gre nicht berschreiten.
Das Problem mit den Pfaden ist , sobald der Benutzer mal einen Ordner verschiebt ist alles futsch… hatte ich auch mal probiert und wieder verworfen. Zu viel Supportaufwand…

Es geht mir hier prinzipiell um Serverbetrieb mit dem cubesql Server, da mssen die Thumbnails berall vorhanden sein…

Leider dauert es 4 mal solange ein Bild vom cubesql zu laden als loakl, selbst wenn die DB loakl liegt…

Ich lese das Bild/PDF als binary stream und schicke den Text zur DB
Die DB legt den Blob automatisch ausserhalb der DB ab und lagert nur den Pfad zum File innerhalb der DB
Die Bilder laden schnell wieder auf, bei grossen PDFs muss man manchmal ein oder zwei Sekunden warten.
Bei Remote Connection entsprechend lnger.

Also ich hatte in der Tabelle mit den Bildern ein paar Monster drin, es ist meine Test DB, die Monster hatten 80 MB…
nachdem ich diese gelöscht hatte, war alles wieder normal schnell…

ich habe jetzt alle Produktbilder auf 300 Pixel Breite mit 80% reduziert, daraus ergibt sich eine Datei von 80kb bis 200kb.
Davon habe ich einfach mal 1000 in der DB abgelegt und habe keinerlei Performance probleme feststellen können.

Alles andere wie große PDF, die der Benutzer braucht, lege ich in einer eigenen Tabelle ab, da sind jetzt auch 1000 Bilder drin mit max 4 MB, ok, da dauert es mal 1 Sekunde im Netzwerk, aber das ist ja kein Problem.

Bei beiden Seiten gibts Pro und Contra. Einen Punkt will ich noch anbringen, wenn Bilder in einer Datenbank abgelegt sind und Abfragen über ganze Datensätze (SELECT * FROM) gehen. Bei lokalen Client-Server Anwendungen oder bei Anwendungen im eigenen Netzwerk fällt dieser nicht ins Gewicht. Aber wehe, wenn jemand plötzlich mit VPN von außen z.B. via 3G (oder schlechter) ins Firmennetz sich einwählt und mit einer App arbeiten will. Selbst wenn nur 200 kB Bilddaten hin und her bewegt werden fällt das negativ auf. Daher wenn schon Bilder in einer DB, dann auch konsequent drauf achten, daß die Abfragen schlank bleiben.

Ja, das ist korrekt… ich komme nun klar, auch über VPN ist es noch angenehm, vorausgesetzt DSL 16, alles andere machtd ann keinen Spaß mehr…

:wink: bei mobilen Nutzern (habe hier ein paar duzend Bauleiter) sind leider schlechte/ langsame Verbindungen mehr die Regel als die Ausnahme… Deutschland steht internetmig schlechter wie Rumnien da. Das ist sogar amtlich (siehe EU-Ranking).