Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi JPEG in BLOB Feld speichern (https://www.delphipraxis.net/70997-jpeg-blob-feld-speichern.html)

Fritz01 7. Jun 2006 19:31

Datenbank: DBase für Windows • Zugriff über: DataSource, TTable

JPEG in BLOB Feld speichern
 
Hallo,
da habe ich wieder ein Problem. Es sollen bmp und/oder jpeg Bilder in einem BlobFeld gespeichert werden.
Bei bmp mache ich das so, und das funktioniert auch.
Delphi-Quellcode:
procedure TForm1.ReadButtonClick(Sender: TObject);
begin
  with Table1 do
  Image1.Picture.Assign(FieldByName('Bild'));
end;

procedure TForm1.WriteButtonClick(Sender: TObject);
begin
 with Table1 do
  begin
   table1.Insert;
   table1.FieldByName('bild').Assign(Image1.Picture);
   table1.Post;
 end;
end;
Nun habe ich die bei USES jpeg eingefügt.
Wie geht das mit jpeg Bildern?
Fritz01

[edit=SirThornberry]Delphi-Tags ergänzt - Mfg, SirThornberry[/edit]

mkinzler 7. Jun 2006 19:38

Re: JPEG in BLOB Feld speichern
 
Zitat:

Wie geht das mit jpeg Bildern?
Müßte geanuso gehen, weil in der Unit jpeg nur ein Formatfilter füt TImage steckt.

Fritz01 7. Jun 2006 20:11

Re: JPEG in BLOB Feld speichern
 
Hi MKINZLER,
nein, leider nicht! Hier kommt die Fehlermeldung:
TPicture kann nicht zu TBloField zugewiesen wereden.
Fritz01

Klaus01 7. Jun 2006 20:14

Re: JPEG in BLOB Feld speichern
 
Hallo Fritz01,

mal bitte hier schauen -> http://forum.dsdt.info/viewtopic.php?p=183788&
und darin dann diesen -> http://www.swissdelphicenter.ch/de/showcode.php?id=1271

Grüße
Klaus

Gerd01 8. Jun 2006 06:22

Re: JPEG in BLOB Feld speichern
 
Kodier doch einfach die jpeg mit base64. Dann musst du dir über den Dateityp keine Gedanken machen. Na und dann dekodieren mit base64 wenn du es liest.

marabu 8. Jun 2006 06:35

Re: JPEG in BLOB Feld speichern
 
Hallo Fritz,

vielleicht ist dieser Beitrag für dich interessant: JPG als BLOB in FireBird-Tabelle speichern

Grüße vom marabu

Edit: Link auf Beitrag #5 durch Link auf Beitrag #2 ersetzt.

Karstadt 8. Jun 2006 07:22

Re: JPEG in BLOB Feld speichern
 
http://forum.dsdt.info/viewtopic.php?p=183788& :stupid:

Fritz01 8. Jun 2006 11:17

Re: JPEG in BLOB Feld speichern
 
Hallo,
habe hier http://www.mike-kraemer.de/html/blob..._paradox_.html ein Beispiel gefunden, alles exakt so gemacht. TImage, Paradox Tabelle, Blob binär usw. Es funktioniert nicht bei JPEG
Was mache ich da nur falsch?? :wall:
Vielleicht weiß da jemand eine Lösung und postet diese.
Fritz01

mikhal 8. Jun 2006 11:22

Re: JPEG in BLOB Feld speichern
 
Verwendest du zum Anzeigen ein TDBimage? Damit habe nur schlechte Erfahrungen gemacht, sobald JPEG ins Spiel kam. Darum verwende ich zur Darstellung grundsätzlich TImage.

Grüße
Mikhal

Fritz01 8. Jun 2006 11:27

Re: JPEG in BLOB Feld speichern
 
Hallo Mikhal,

ich habe mich exakt an das Beispiel gehalten, und ich habe TImage verwendet.
Habe allerdings Delphi 4, sollte es daran liegen?
Fritz01

mikhal 8. Jun 2006 12:24

Re: JPEG in BLOB Feld speichern
 
Es hat wohl weniger mit Delphi 4 zu tun. Für JPG mußt du erst einen Umweg gehen, wie er oben bereits mehrfach angeboten wurde. Als Anhalt folgender Beispielquelltext:

Delphi-Quellcode:
var
  jpgBild: TJpegImage;
  bmBild: TBitmap;
...
begin
  ...
  bmBild := TBitmap.Create;
  try
    jpgBild := TJpegImage.Create;
    try
      jpgBild.LoadFromFile(Table1.FindField('BildName').AsString);
      jpgBild.DIBNeeded;
      bmBild.Assign(jpgBild);
    finally
      FreeAndNil(jpgBild);
    end;
    Image1.Picture.Bitmap.Assign(bmBild);
  finally
    FreeAndNil(bmBitmap);
  end;
  ...
end;
Grüße
Mikhal

Fritz01 8. Jun 2006 18:43

Re: JPEG in BLOB Feld speichern
 
Hallo nochmal,
so recht komme ich damit nicht klar, wo der Umweg gemacht werden muß.
1. Bild von Platte nach TImage, 2. von TImage nach BLOB, 3. von BLOB nach TImage
Vielleicht hilft mir das weiter.
Fritz

marabu 8. Jun 2006 19:50

Re: JPEG in BLOB Feld speichern
 
Wo ist dein Problem, Fritz?

Ich hatte dir in Beitrag #6 einen Link auf einen Thread gegeben in dem du fertigen Code zum Laden und Speichern von JPG Bildern findest. Ich habe mit diesem Code soeben JPG Bilder in einer Visual Dbase Datei geschrieben und gelesen. Wie kann man dir noch helfen?

Freundliche Grüße vom marabu

Fritz01 8. Jun 2006 22:23

Re: JPEG in BLOB Feld speichern
 
Hallo marabu,
ja richtig, wie kann man mir noch helfen. Werde mich mit diesem Thema noch beschäftigen müssen. Da fehlt es sicher in diesem Punkt an entsprechenden Kenntnissen. Vielleicht postest Du mir mal den Code als Procedure, ich möchte nicht abschreiben ohne zu verstehen. Wenn aber sowas funktioniert kann ich es sicher nachvollziehen.
Fritz

marabu 9. Jun 2006 08:08

Re: JPEG in BLOB Feld speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Fritz,

ich habe dir eine kleine Demo erstellt - die benötigte Tabelle liegt bei. Du kannst über den DBNavigator neue Bilder in die Tabelle aufnehmen, bestehende Bilder ersetzen oder löschen. Ich hoffe du kommst zurecht.

Freundliche Grüße vom marabu

Fritz01 9. Jun 2006 15:34

Re: JPEG in BLOB Feld speichern
 
Hallo marabu,
ein ganz dickes Dankeschön für die Mühe und Hilfe. Natürlich gilt der Dank auch allen Anderen!
Habe versucht, Dein Beispiel so wie es ist zu öffnen. Fehlermeldung 'beim erzeugen von Formular: ungültiges StreamFormat. Danach habe ich das ganze neu gemacht und Deinen Code benutzt. Darauf die nächste Meldung: 'Variants.dcu' nicht gefunden und ohne 'Variants' geht da garnichts. Das liegt an Delphi 4, ist ja auch schon etwas älter und ich sollte mir was 'moderneres' anschaffen denke da an D7 prof. Nur woher nehmen schaue schon ständig bei eBay danach.
Mit JPEG muß ich mal schaun wie ich da weiter komme, hatte ja bisher genügend Vorschläge unf Hilfe.
Diese Gechichte soll am Ende so sein, dass ich ein Bild von der Platte hole, in ein Formular stelle und zum Schluß mit ButtonClick in einer Datenbanktabelle ablegen kann. Es sollte mit .bmp und .jpeg funktionieren. Will mal sehen und nochmals danke.
Fritz

marabu 9. Jun 2006 18:39

Re: JPEG in BLOB Feld speichern
 
Hallo Fritz,

nicht aufgeben. Das ungültige Stream-Format entsteht dadurch, dass die neueren Delphi-Versionen die Forms (DFM) als Text speichern, während die älteren Versionen ein Binärformat verwendeten. Damit du meine DFM-Datei laden kannst musst du sie zuerst mit einem Hilfsprogramm namens CONVERT aus deinem Delphi-Bin-Verzeichnis vom Text- in das Binärformat wandeln. Werden dabei Eigenschaften als unbekannt ausgewiesen, dann entferne diese einfach aus der Textdatei.

In neueren Delphi-Versionen wurde alle Funktionalität rund um Variants in der gleichnamigen Unit konzentriert, die vorher auf verschiedene Units verteilt war. Schmeiß Variants einfach aus der Uses-Klausel und gut ist.

marabu

Fritz01 10. Jun 2006 18:44

Re: JPEG in BLOB Feld speichern
 
Hallo marabu,
nein, nein aufgeben möchte ich nicht.
Deine Sache läuft! Muß nun erst mal den Code studieren und verstehen, um es für mein Vorhaben entsprechend zu ändern. Ich benötige, wie oben schon beschrieben folgendes: Von Datei (Festplatte) nach TImage und von dort mit Click in das BlobFeld schreiben und umgekehrt vom BlobFeld lesen und zurück nach TImage. Werde es wohl schaffen. Ich melde mich dánn wieder.
Fritz


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz