Soooooooooooooo,
an alle die Interesse daran haben, diese Procedure ist jetzt voll funktionstüchtig und tut das was sie soll:
Delphi-Quellcode:
procedure StoreJPEGImage(Table: TTable; 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;
Da ich sie speziell an meine Bedürfnisse angepasst und in einer seperaten
Unit ausgelagert habe muß sie natürlich noch an gewissen Punkten angepasst werden.
Wer Verbesserungvorschläge in Bezug auf Geschwindigkeit und Optimierung (oder sonstige Ideen) hat kann sie hier gerne Vorstellen.
Grüße Legolas