Zitat von
DeddyH:
Also, Du hast einen MemoryStream mit einem Bild drin? Dann sollte Nicos Code doch mit einer kleinen Änderung funktionieren.
Delphi-Quellcode:
function StreamToString(const Buffer: TMemoryStream): AnsiString;
begin
SetString(Result, PAnsiChar(Buffer.Memory), Buffer.Size);
end;
Falls nicht, lass Dir doch mal Buffer.Size usw. mal ausgeben.
Würde das nicht nach dem ersten 0-Byte spätestens schiefgehen?
Vielleicht soltle man das Bild lieber sicherheitshalber in Hex-Strings konvertieren. ist zwar größer, aber schöner.
Der Ansatz wurde auch schon genannt
Delphi-Quellcode:
function BitmapToString(b: TBitmap): String;
var ms: TMemoryStream;
a: Int64;
buffer: Array[0..1024] of Byte;
begin
result := '';
ms := TMemoryStream.Create;
try
b.SaveToStream(ms);
ms.Seek(0, soFromBeginning);
a := 0;
while a <> 0 do
begin
a := ms.read(buffer[0], length(buffer));
for i := 0 to a-1 do
begin
result := result + IntToHex(buffer[i], 2);
end;
end;
finally
ms.Free;
end;
end;
(ungetestet)