![]() |
SOAP TBytpeDynArray zum Bild
Hallo,
ich bekomme via Soap Webservice ein Bild in einem TByteDynArray mit bekannter länge geliefert. Weis jemand wie ich daraus ein Bild anzeigen kann ohne auf die Platte zu Speichern :pale: |
AW: SOAP TBytpeDynArray zum Bild
Hier ein JPEG Beispiel, zuerst zerlege ich das JPEG in Bytes, danach wandel ich alles wieder in ein JPEG um.
Füge an passender Stelle Deinen SOAP Code ein.
Delphi-Quellcode:
procedure TfrmMain.Button1Click(Sender: TObject);
var memStream : TMemoryStream; aByteArray : array of Byte; aGraphic1, aGraphic2 : TJPEGImage; begin aGraphic2 := nil; aGraphic1 := TJPEGImage.Create; try aGraphic1.Assign(Image1.Picture.Graphic); // Konvertiere JPEG in ein array of byte memStream := TMemoryStream.Create; try aGraphic1.SaveToStream(memStream); memStream.Position := 0; SetLength(aByteArray, memStream.Size); memStream.ReadBuffer(Pointer(aByteArray)^, memStream.Size); finally FreeAndNil(memStream); end; // Hier Dein Senden Code für aByteArray // SuppeSendeBytes() // Jetzt folgt Code um das ganze wieder zum laufen zu bringen // Konvertiere array of byte nach JPEG memStream := TMemoryStream.Create; try memStream.WriteBuffer(Pointer(aByteArray)^, Length(aByteArray)); memStream.Position := 0; aGraphic2 := TJPEGImage.Create; aGraphic2.LoadFromStream(memStream); finally FreeAndNil(memStream); end; // Zeige das Bild Image2.Picture.Assign(aGraphic2); finally // aufräumen SetLength(aByteArray, 0); FreeAndNil(AGraphic2); FreeAndNil(AGraphic1); end; end; |
AW: SOAP TBytpeDynArray zum Bild
Format ist nicht bekannt, in der Doku steht Bilddaten ....
Delphi-Quellcode:
das war mein Versuch, fliegt aber weg wenn das Bild angezeigt werden soll:
try
BlobStream := TMemoryStream.Create; BlobStream.Read(eccPic.Data[0],eccPic.DataLength); Blobstream.Position := 0; Jpg := TJPEGImage.Create; try Jpg.LoadFromStream(BlobStream); cxImage1.Picture.Assign(Jpg); finally Jpg.Free; end; finally BlobStream.Free; end; JPEG-FEHLER #42 |
AW: SOAP TBytpeDynArray zum Bild
Ohhh, dann nützt Dir mein Beispiel-Code auch nicht, oder doch? Ist halt auf JPEG zugeschnitten.
|
AW: SOAP TBytpeDynArray zum Bild
ich weiss nicht genau, ob das
BlobStream.Read(eccPic.Data[0],eccPic.DataLength); stimmt ? |
AW: SOAP TBytpeDynArray zum Bild
Was bei Dir BlobStream heißt nennt sich bei mir MemStream, vergleiche das einfach.
Wenn dabei Fehler auftreten wäre es praktisch mal ein Beispiel Bild zu erhalten um das Bildformat zu bestimmen. Wenn es Unterschiedliche Formate sein können muss man das dem Programm beibringen. |
AW: SOAP TBytpeDynArray zum Bild
ich habe es nun via FileStream als bild.jpg gespeichert. dann erscheint das Bild, wie es soll!
Delphi-Quellcode:
fi:=TFileStream.Create('D:\test\bild.jpg',fmCreate);
fi.Write(eccPic.Data[0],eccPic.DataLength); fi.Free;
Delphi-Quellcode:
weiss jemand wie das nur via memorystream geht ?
try
BlobStream := TMemoryStream.Create; BlobStream.Read(eccPic.Data[0],eccPic.DataLength); Blobstream.Position := 0; fi:=TFileStream.Create('D:\test\bild.jpg',fmCreate); fi.Write(eccPic.Data[0],eccPic.DataLength); fi.Free; Jpg := TJPEGImage.Create; try // Jpg.LoadFromStream(BlobStream); // cxImage1.Picture.Assign(Jpg); cxImage1.Picture.LoadFromFile('D:\test\bild.jpg'); finally Jpg.Free; end; finally BlobStream.Free; end; |
AW: SOAP TBytpeDynArray zum Bild
Delphi-Quellcode:
try
BlobStream := TMemoryStream.Create; BlobStream.WriteBuffer(eccPic.Data[0],eccPic.DataLength); // hier sollen wir schreiben und nicht lesen oder? Blobstream.Position := 0; Jpg := TJPEGImage.Create; try Jpg.LoadFromStream(BlobStream); cxImage1.Picture.Assign(Jpg); finally Jpg.Free; end; finally BlobStream.Free; end; |
AW: SOAP TBytpeDynArray zum Bild
kaum macht man es richtig, funktionierst :lol:
Delphi-Quellcode:
wenn man Read und Write verwechselt, so wird das nichts :pale:
try
BlobStream := TMemoryStream.Create; BlobStream.Write(eccPic.Data[0],eccPic.DataLength); Blobstream.Position := 0; Jpg := TJPEGImage.Create; try Jpg.LoadFromStream(BlobStream); cxImage1.Picture.Assign(Jpg); finally Jpg.Free; end; finally BlobStream.Free; end; Danke für die Hilfe! |
AW: SOAP TBytpeDynArray zum Bild
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 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