Witam,
Tworzę aplikację z serwerem REST oraz klient Android w Delphi XE10.1 i mam problem, a mianowicie - nie mogę poradzić sobie z wysyłaniem obrazków...
Mój kod:
var
AImageStream: TStream;
begin
// Dodawanie zdjęć
// Listbox lbAddVIN zawiera itemy ktore zawieraja obrazek (lbAddVIN_Photos.ItemByIndex(i).ItemData.Bitmap)
for i := 0 to lbAddVIN_Photos.Items.Count -1 do
begin
AImageStream := TMemoryStream.Create;
try
AImageStream.Position := 0;
lbAddVIN_Photos.ItemByIndex(i).ItemData.Bitmap.SaveToStream(AImageStream);
LJSONObject.AddPair(TJSONPair.Create ('ZDJECIE_' + IntToStr(i + 1),
TIdEncoderMIME.EncodeStream( AImageStream )));
// LJSONObject.ToString - zwraca PUSTY STRING
// Tutaj rozmiar AImageStream.Size > 0
AImageStream.Free;
AImageStream := TMemoryStream.Create;
TIdDecoderMIME.DecodeStream((LJSONObject.GetValue('ZDJECIE_1') as TJSONString).Value, AImageStream);
AImageStream.Position := 0;
// Tutaj juz AImageStream.Size = 0
image1.Bitmap.LoadFromStream(AImageStream);
finally
AImageStream.Free;
end;
Co robię nie tak? Nie mogę nic na necie znaleźć odnośnie wysyłania Image przez JSON.
Podobno jest to najszybszy sposób z JSONem poprzez kodowanie go, przez co skraca jego rozmiar.
Position
równy0
, więc nie trzeba tego ręcznie ustawiać;