Laden und speichern von Bild aus blob-Feld in delphi mit firebird
In meinem Firebird-Datenbank habe ich ein Blob-Feld, enthält ein Bitmap. Ich werde mal in laden und anzeigen, in ein TImage liegt an meiner Form. Anschließend werde ich haben, zu speichern, die im gleichen Bereich der image-ausgewählt von einem OpenDialog.
Es ist generell eine schlechte Idee, um Bilder zu speichern in die Datenbank. Stattdessen speichern Sie nur den Pfad zum Bild auf dem Dateisystem.
der Kunde kann einfach keinen Zugriff auf das Dateisystem. So, während RDBMS sind nicht die Speicherung der Medien durch design - manchmal ist es vereinfacht das system-design im Allgemeinen. Natürlich einige Kosten.
Im Allgemeinen, so dass Verallgemeinerungen ist eine schlechte Idee ;), es hängt wirklich davon ab, die Anwendung und Grenzen. Vorteile: die Dateien werden gesichert, die zusammen mit DB-Anwendungen (fat-clients) mit Zugriff auf Ihre db nicht benötigen ebenfalls Zugriff auf einen zentralen Speicherort der Datei, die Datei und die zugehörigen db-Datensatz sind bewacht von der Integrität Zugriffskontrolle der Datenbank Nachteile: die db (und dessen backup) kommt wirklich Fett, die Dateien von einem webserver wird komplizierter, etc.
danke für die Aufklärung, denn ich vergaß zu erwähnen vor-und Nachteile. Ich hatte gehofft, dass die OP würde Sie einige der Forschung selbst 🙂
der Kunde kann einfach keinen Zugriff auf das Dateisystem. So, während RDBMS sind nicht die Speicherung der Medien durch design - manchmal ist es vereinfacht das system-design im Allgemeinen. Natürlich einige Kosten.
Im Allgemeinen, so dass Verallgemeinerungen ist eine schlechte Idee ;), es hängt wirklich davon ab, die Anwendung und Grenzen. Vorteile: die Dateien werden gesichert, die zusammen mit DB-Anwendungen (fat-clients) mit Zugriff auf Ihre db nicht benötigen ebenfalls Zugriff auf einen zentralen Speicherort der Datei, die Datei und die zugehörigen db-Datensatz sind bewacht von der Integrität Zugriffskontrolle der Datenbank Nachteile: die db (und dessen backup) kommt wirklich Fett, die Dateien von einem webserver wird komplizierter, etc.
danke für die Aufklärung, denn ich vergaß zu erwähnen vor-und Nachteile. Ich hatte gehofft, dass die OP würde Sie einige der Forschung selbst 🙂
InformationsquelleAutor stacker | 2012-12-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beispiel für die Verwendung
Es funktioniert, vielen Dank!
Hey, Klasse erkunden TBlobStream 🙂 soweit ich mich erinnere können Sie vermeiden, intermediate Erstellung von TMemoryStream und bekommen den Strom direkt vom Feld!
Sie müssen wissen, welche Art von TGraphic ist gespeichert in den Blob und erstellen Sie eine geeignete Klasse. Diese information bekannt ist, wenn Sie nur wollen, um zu speichern JPG-Bilder, die gespeichert werden können in einem anderen Feld in der Datenbank, oder gespeichert werden, mit der die Grafik in den blob. Ein Beispiel für die Letzte Möglichkeit wird hier gezeigt. stackoverflow.com/a/14726934/1699210
Sollten Sie es hinzufügen, wie die Frage selbst, statt zu Fragen, in die Kommentare. Ich kann nicht sehen, wo IStream und jpg erstellt, nur, dass Sie frei sind. #53 klingt wie ein beschädigter oder Ungültiger JPEG, wie z.B. eine Bitmap, eine nicht unterstützte JPG falsch gespeichert (BLOB) JPG. Sie könnten versuchen, (für debugging) zum speichern des Streams für das debugging in eine Datei, und überprüfen Sie ihn und versuchen Sie zu laden, um ein TImage und/oder ein Grafik-Programm. Image1.Bild wäre overritten in jedem loop(zwar nicht rs.EOF).
InformationsquelleAutor bummi