![]() |
TImage - TBitmap und TmemoryStream
unten ein kleiner Testcode zum hin und her kopieren von Bildern auf einem TImage in einen TMemoryStream.
Wenn ich in der Delphi IDE zwei *.bmp#s in das TImage lade spielt der Code, wenn ich *.jpg in das TImage lade klappt das ganze nicht mehr. Warum, ich dachte es egal was die quelle /Image typ war ?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject); var aMemoryStream : TmemoryStream; BMemoryStream : TmemoryStream; begin aMemoryStream := TmemoryStream.Create; aMemoryStream.Seek(0, soFromBeginning); image1.Picture.Graphic.SaveToStream(aMemoryStream); bMemoryStream := TmemoryStream.Create; bMemoryStream.Seek(0, soFromBeginning); image2.Picture.Graphic.SaveToStream(bMemoryStream); aMemoryStream.Position := 0; bMemoryStream.Position := 0; image2.Picture.Graphic.LoadFromStream(aMemoryStream); image1.Picture.Graphic.LoadFromStream(bMemoryStream); aMemoryStream.Free; bMemoryStream.Free; end; procedure TForm1.Button2Click(Sender: TObject); var aMemoryStream : TmemoryStream; BMemoryStream : TmemoryStream; begin aMemoryStream := TmemoryStream.Create; aMemoryStream.Seek(0, soFromBeginning); image1.Picture.Bitmap.SaveToStream(aMemoryStream); bMemoryStream := TmemoryStream.Create; bMemoryStream.Seek(0, soFromBeginning); image2.Picture.bitmap.SaveToStream(bMemoryStream); aMemoryStream.Position := 0; bMemoryStream.Position := 0; image2.Picture.bitmap.LoadFromStream(aMemoryStream); image1.Picture.bitmap.LoadFromStream(bMemoryStream); aMemoryStream.Free; bMemoryStream.Free; end; |
AW: TImage - TBitmap und TmemoryStream
Aus einem Stream bekommt TGraphic das Dateiformat nicht raus.
TGraphic prüft ausschließlich auf Dateiendungen und bei einem Stream gibt es diese ja nicht. Fazit: Du mußt selber für das Format sorgen, also in Image.Picture.Graohic das richtige Grafikobjekt laden und dann dorthinein die Grafik. Nur das Bitmap ist über Image.Picture.Bitmap direkt integriert. z.B. so in der Art:
Delphi-Quellcode:
Image1.Picture.Graphic := TJpegImage.Create;
Image1.Picture.Graphic.LoadFromStream(... PS:
Delphi-Quellcode:
ist übrigens das Selbe wie
MemoryStream.Seek(0, soFromBeginning);
Delphi-Quellcode:
und direkt nach dem Erstellen eines Streams steht das sowieso schon auf Position 0.
MemoryStream.Position := 0;
|
AW: TImage - TBitmap und TmemoryStream
Danke , Frage beantwortet
|
AW: TImage - TBitmap und TmemoryStream
als erweiterung/anwendung kann man in einer neuen demo
![]() die spielregeln darf sich jeder selbst ausdenken |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz