0

次のコード スニペットでは、メソッド 1 によって showmessage に 10048 が表示され、メソッド 2 と 3 では 9792 が表示されます。XML ノードで使用するための正しいエンコーディングを提供しているのはどのメソッドですか? ディスク上のファイルサイズは 7343 です。ありがとう

DrawingField: AnsiString;
PicStream := TMemoryStream.Create;
encoder := TidEncoderMIME.Create(nil);
StringStream := TStringStream.Create('');
try
  Image1.Picture.LoadFromFile('Ryan.jpg');
  Image1.Picture.Graphic.SaveToStream(PicStream);

  {$ifdef METHOD1}
  DrawingField := EncodeBase64(PicStream.Memory, PicStream.Size);
  {$endif}
  {$ifdef METHOD2}
  PicStream.Position := 0;
  encoder.EncodeStream(PicStream, StringStream);
  DrawingField := StringStream.DataString;
  {$endif}
  {$ifdef METHOD3}
  PicStream.Position := 0;
  DrawingField := encoder.EncodeStream(PicStream, PicStream.Size);
  // SetString(DrawingField, PAnsiChar(PicStream.Memory), PicStream.Size);
  {$endif}

  ShowMessage(IntToStr(Length(DrawingField))); // 1 = 10048 2/3 = 9792
finally
  encoder.Free;
  PicStream.Free;
  StringStream.Free;
end;
4

0 に答える 0