Mal eine bescheidene Frage:
Hast du das wirklich
so in einer realen Anwendung drin?
Delphi-Quellcode:
function ShowBitmapFromStream (ms: TMemoryStream; fn: shortString): ShortString;
var
Filter: FMX.Filter.TFilter;
begin
Filter := TFilterManager.FilterByName('PaperSketch');
try
F_Filters := TF_Filters.Create(Application);
F_Filters.ImageViewer1.bitmap.LoadFromStream(ms);
if F_Filters.ShowModal = mrOK then begin
Filter.ValuesAsBitmap['Input'] := F_Filters.ImageViewer1.bitmap;
Filter.ValuesAsFloat ['BrushSize'] := F_Filters.TrackBar1.Value;
F_Filters.ImageViewer1.bitmap := TBitmap (Filter.ValuesAsBitmap['Output']);
F_Filters.ImageViewer1.bitmap.SaveToFile (fn);
Result := fn;
end else begin
Result := '';
end;
finally
F_Filters.Free;
end;
end;
Da fallen mir so ein paar Dinge auf, die ich so nicht machen würde:
- den Dateinamen würde ich per WideString
übergeben
- den Stream würde ich per IStream
übergeben
- ich würde überhaupt keinen Dateinamen übergeben und den Austausch auch nicht über eine Datei machen, sondern per IStream
zurückliefern
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)