Thema: Delphi Probleme mit Streams

Einzelnen Beitrag anzeigen

Benutzerbild von Legolas
Legolas

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

Probleme mit Streams

  Alt 28. Sep 2003, 11:24
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
Grüße Legolas

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