Entwickler-Ecke

Datenbanken - Grafik in DB-BlobFeld schreiben


Chaosworld - Fr 24.06.05 21:17
Titel: Grafik in DB-BlobFeld schreiben
Ich habe eine Datenbank mit einem Blob-Feld um Grafiken abzuspeichern. Über die zwischenablage kann ich die Bilder einfügen. Mein Problem ist aber, ich kann nicht per Quelltext Bilder einfügen. Ich habe schon hier im Forum gesucht und diese beiden Punke gefunden:
http://www.delphi-forum.de/topic_Blob+ohne+Blobstream+mit+Daten+versorgen_30551.html&sid=5acbd17cca3bd8134e02a4550e547457
http://www.delphi-forum.de/viewtopic.php?p=67933#67933

das hört sich ja interessant an, leider klappen beide Routinen nicht.

Wenn ich eine bmp-datei auswähle klappt es ohne Problem, wenn ich jedoch eine jpg-Dateien damit öffnen will, bekomme ich folgende Meldung: "Bitmap ist ungültig."

Als Datenbank verwende ich Advantage Database System.

Ich hoffe es hat noch jemand eine Idee, wie ich das machen kann, im vorraus Danke für jede Hilfe

Chaosworld


hansa - Sa 25.06.05 12:44

Die zitierten Beispiele beziehen sich aber auf Interbase ! Hehe, ich weiß schon warum viele das bzw. Firebird benutzen (ich auch). :mrgreen: Du hast bestimmt die kostenlose Advantage Version, ohne Transaktionssteuerung usw. Wenn solch elementare Dinge schon fehlen, dann würde mich nicht wundern, wenn sie bei Blobs auch Einschränkungen machen. Aber das wäre doch in diesem Fall nicht mal schlimm. Warum speicherst Du nicht einfach in der DB nur den Dateinamen ?


peter B - Mi 20.07.05 03:03

Hallo Chaosworld!

Du schreibst 'Bitmap ungültig'!? Das ist sicher keine Meldung von der Datenbank Engine.
Offenbar verwendets Du irgendwo ein TImage oder Ableger davon.
Klar, wenn Du in Deinem Blob-Feld ein jpg ablegst und das per Stream in ein TIMage.Picture.Bitmap oder so wieder 'reinstreamst' krachts.

Ich mach das so (mit Oracle und Access)
ein jpg Object und ein TStream Objekt anlegen.
Blob-Stream aus dem Dataset erzeugen (CreateBlobStream...)
jpg.LoadFromStream
Image.Picture.Assign(jpg)

dann alles unbenutze wieder lecker freigeben. Vielleicht gehts cooler? Aber so klappte es bisher....

Toi toi


Chaosworld - Sa 23.07.05 00:15

JA
ich habe DBImage verwendet. Danke für den Hinweis, werde ich probieren. Das DBImage noch nicht mal JPEG kann, hätte ich nie gedacht. Ich werde es probieren mit dem Tip:
jpg.LoadFromStream
Image.Picture.Assign(jpg)
Danke

Chaosworld