procedure TPicture.WriteData(Stream: TStream);
var
  LClassName: string;
  LBytes: TBytes;
  LNameLen: Integer;
begin
  with Stream do
  begin
    if Graphic <> nil then
      LClassName := Graphic.ClassName
    else
      LClassName := '';
    LBytes := TEncoding.UTF8.GetBytes(LClassName);
    LNameLen := Length(LBytes);
    Write(LNameLen, 1);  // Only write 1 byte (length of string)
    Write(LBytes{$IFNDEF CLR}[0]{$ENDIF}, LNameLen);

    if Graphic <> nil then
      Graphic.WriteData(Stream);
  end;
end;