AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Probleme beim auslesen eines JPG aus einer DB
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme beim auslesen eines JPG aus einer DB

Ein Thema von delos0815 · begonnen am 6. Okt 2003 · letzter Beitrag vom 8. Okt 2003
Antwort Antwort
delos0815

Registriert seit: 6. Okt 2003
2 Beiträge
 
#1

Probleme beim auslesen eines JPG aus einer DB

  Alt 6. Okt 2003, 18:02
Hallo

Ich hab das problem das wenn ich versuche ein JPG aus einer SQL DB via DBImage auszulesen immer die meldung bekomme "Bitmap ist ungültig".

Ich habe die unit jpeg eingebunden und es funktioniert trotzdem nicht.

was muss ich tun.

danke im voraus

Delos0815
  Mit Zitat antworten Zitat
xbu58

Registriert seit: 10. Dez 2002
Ort: Bäretswil / Schweiz
121 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Probleme beim auslesen eines JPG aus einer DB

  Alt 6. Okt 2003, 19:07
Hallo Delos

Du must die JPG-Klasse registrieren. Das machst Du am besten im MainModul.
Beispiel:
Delphi-Quellcode:
unit MainUnit;
interface
uses
  Windows,
  ......
  jpeg, GifImage;
....
implementation
....
procedure .....
....
end;

initialization
  RegisterClasses([TBitmap, TGifImage, TJPEGImage]);
end.
Diesee Registrierung ist nur einmal nötig, sie ist also für die ganze Applikation gültig. Ev. hast zusätzlich noch das Problem, dass Du in der DB im gleichen DB-Feld verschiedene Image-Type speichern möchtest. Dann ist es zu empfehlen, dass Du ein Feld hast, in welchem Du sagen kanst, um welchen Type es sich handelt.

Gruss
Xaver
Gruss
Xaver
http://www.vid-software.com oder http://www.dreamland-photos.ch
Irren ist menschlich. Aber wenn man richtig Mist bauen will, braucht man einen Computer
  Mit Zitat antworten Zitat
delos0815

Registriert seit: 6. Okt 2003
2 Beiträge
 
#3

Re: Probleme beim auslesen eines JPG aus einer DB

  Alt 6. Okt 2003, 19:26
Danke für den Tip, hat aber leider bei mir nicht funktioniert.
Er bringt immer noch die gleiche Fehlermeldung.

aber trotzdem danke

delos0815
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

Re: Probleme beim auslesen eines JPG aus einer DB

  Alt 6. Okt 2003, 19:40
da wirst du woll selber das bild in ein Blob speichern müssen. da anscheinend nur bitmaps akzeptiert werden.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von Legolas
Legolas

Registriert seit: 28. Sep 2003
Ort: Frankfurt am Main
72 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Probleme beim auslesen eines JPG aus einer DB

  Alt 8. Okt 2003, 20:05
Hallo Delos0815,

neolithos hat recht. Ich hatte das gleiche Problem habe es aber es aber letztendlich mit zwei eigenen Proceduren geschafft.

Ich habe das in diesem Forum zwar schon veröffentlicht, da es aber nur eine der beiden Proceduren war poste ich das ganze hier nochmal. Die beiden Proceduren sind zwar auf meine Bedürfnisse angepasst aber ich denke du wirst keine Schwierigkeiten haben sie so zu modifizieren wie du Sie brauchst. Im aktuellen zustand sind sie in der Lage eine JPG-Datei in eine gewünschten Größe zu bringen und zu komprimieren (ist für eine DB nicht unvorteilhaft).

Delphi-Quellcode:
procedure StoreCJPEGImage(Table: TQuery; Field: STRING);
var s : TBlobStream;
    fs: TFileStream;
    ms: TMemoryStream;
    bmp : TBitmap;
    jpeg: TJPEGImage;
begin
  bmp := tbitmap.create;
  jpeg := tjpegimage.create;
  fs := TFileStream.Create(Haupt.CoverDialog.FileName, fmOpenRead);
  s := TBlobStream.create(Table.FieldByName(Field) AS TBlobField, bmWrite);
  ms:=TMemoryStream.Create;
  try
    jpeg.LoadFromStream(fs);
    bmp.assign(jpeg);
    If jpeg.width>jpeg.Height then
    begin
      bmp.width:=400;
      bmp.height:=250;
    end else
    begin
      bmp.width:=250;
      bmp.Height:=400;
    end;
    bmp.canvas.StretchDraw(Rect(0,0,bmp.width,bmp.height),jpeg);
    jpeg.compressionquality := 50;
    jpeg.assign(bmp);
    jpeg.SaveToStream(ms);
  finally
    bmp.free;
    jpeg.free
  end;
  ms.Position:=0;
  s.CopyFrom(ms, ms.Size);
  fs.free;
  s.Free;
end;

procedure LoadCJPEGImage(Table: TQuery; Field: STRING; Image: TImage);
var s : TBlobStream;
    jpg: TJPEGImage;
begin
  if not (Table.FieldByName(Field) AS TBlobField).IsNull THEN
  begin
    s := TBlobStream.create(Table.FieldByName(Field) AS TBlobField, bmRead);
    jpg := TJPEGImage.Create;
    jpg.LoadFromStream(s);
    Image.Picture.Assign(jpg);
    jpg.Free;
    s.Free;
  end else
  begin
    Image.Picture.Assign(NIL);
  end;
end;
Ich denke das hilft dir bei deinem Problem.
Grüße Legolas

Wissen ist Macht.
Wir wissen nichts, macht nichts.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:53 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