Danke für die schnellen Antworten:
Zitat von
Alter Mann:
Hi,
versuche es mal so:
Delphi-Quellcode:
procedure TXXXX.ReadImage(aFieldName :
String);
var
BS : TStream;
MS : TMemoryStream;
begin
BS :=
Query.CreateBlobStream(
Query.FieldByName(aFieldName), bmRead);
BS.Seek(0, soFromBeginning);
MS := TMemoryStream.Create;
MS.CopyFrom(BS, BS.Size);
MS.Position := 0;
Image321.Bitmap.LoadFromStream(MS);
MS.Free;
BS.Free;
end;
Alter Mann
Das Ist ja im Prinzip das gleiche wie ich es auch habe, nur, das ich per TStream und nicht per TMemoryStream zugreife. --> ich habs gesetztet aber das ergebniss ist leider noch das gleiche
Zitat von
alleinherrscher:
Ich würde keine JPGs per bitmap.loadfromfile bzw. bitmap.loadfromstream laden, da es sich hier, wie der name schon vermuten lässt, eigentlich um Bitmaps handelt. Mag sein, dass Delphi so intelligent ist, und anhand der Dateiendung bei loadfromfile erkennt, dass es sich um ein jpg handelt.
Aber ich würde den umweg über ein TJPEGImage gehen, und zunächst das Bild per loadfromstream in das TJPEGImage laden. Anschließend würde ich dann die canvas auf das Bitmap kopieren. Das ist meiner Meinung nach der korrekte weg.
Grüße,
Michael
[edit]
Quasi so:
Delphi-Quellcode:
function JPEGtoBMP(FS:TFilestream):tbitmap;
var jpeg:tJPEGImage;
begin
Jpeg:= TJPEGImage.Create;
try
jpeg.LoadFromStream(FS);
result:= TBitmap.Create;
result.Assign(jpeg);
finally
jpeg.Free
end;
end;
Das werde ich gleich mal Testen. Betrifft das JPG und JPEG?