![]() |
Probleme beim auslesen eines JPG aus einer DB
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 |
Re: Probleme beim auslesen eines JPG aus einer DB
Hallo Delos
Du must die JPG-Klasse registrieren. Das machst Du am besten im MainModul. Beispiel:
Delphi-Quellcode:
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.
unit MainUnit;
interface uses Windows, ...... jpeg, GifImage; .... implementation .... procedure ..... .... end; initialization RegisterClasses([TBitmap, TGifImage, TJPEGImage]); end. Gruss Xaver |
Re: Probleme beim auslesen eines JPG aus einer DB
Danke für den Tip, hat aber leider bei mir nicht funktioniert.
Er bringt immer noch die gleiche Fehlermeldung. aber trotzdem danke delos0815 |
Re: Probleme beim auslesen eines JPG aus einer DB
da wirst du woll selber das bild in ein Blob speichern müssen. da anscheinend nur bitmaps akzeptiert werden.
|
Re: Probleme beim auslesen eines JPG aus einer DB
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:
Ich denke das hilft dir bei deinem Problem.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz