Hallo alle zusammen,
ich nehme heute das erste mal aktiv an eurem Forum teil
und hoffe die richtige Sparte erwischt zu haben. Da es um JPEG-Dateien geht, denke ich das schon. Nun zu meinem Problem:
Ich habe ein JPEG-Bild das ich mit einer Routine in der Größe verkleinern und komprimieren möchte. Dafür habe ich mich einiger Beiträge aus diesem Forum bedient. Folgenden Code habe ich erstellt:
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;
jpeg.compressionquality := 50;
jpeg.assign(bmp);
jpeg.SaveToStream(ms);
ms.
finally
bmp.free;
jpeg.free
end;
[color=#ff0024]s.CopyFrom(ms, ms.Size);[/color] <-- HIER ENTSTEHT EINE
EXCEPTION DER KLASSE EReadError AUF.
fs.free; MELDUNG: Stream-Lesefehler !!!
s.Free;
end;
Wie Ihr sehen könnt versuche ich einen TBlobStream in einen TMemoryStream zu kopieren. Aber anscheinend funktioniert das nicht so, oder?
Wo habe ich da einen Fehler gemacht und wer kann mir einen entscheidenden Tip geben.
Gruß Legolas