def save(self, out, kind=None, **kw):
        """\
        Serializes the QR Code in one of the supported formats.
        The serialization format depends on the filename extension.

        **Common keywords**


        ==========    ==============================================================
        Name          Description
        ==========    ==============================================================
        scale         Integer or float indicating the size of a single module.
                      Default: 1. The interpretation of the scaling factor depends
                      on the serializer. For pixel-based output (like PNG) the
                      scaling factor is interepreted as pixel-size (1 = 1 pixel).
                      EPS interprets ``1`` as 1 point (1/72 inch) per module.
                      Some serializers (like SVG) accept float values. If the
                      serializer does not accept float values, the value will be
                      converted to an integer value (note: int(1.6) == 1).
        border        Integer indicating the size of the quiet zone.
                      If set to ``None`` (default), the recommended border size
                      will be used (``4`` for QR Codes, ``2`` for a Micro QR Codes).
        color         A string or tuple representing a color value for the dark
                      modules. The default value is "black".  The color can be
                      provided as ``(R, G, B)`` tuple, as web color name
                      (like "red") or in hexadecimal format (``#RGB`` or
                      ``#RRGGBB``). Some serializers (SVG and PNG) accept an alpha
                      transparency value like ``#RRGGBBAA``.
        background    A string or tuple representing a color for the light modules
                      or background. See "color" for valid values.
                      The default value depends on the serializer. SVG uses no
                      background color (``None``) by default, other serializers
                      use "white" as default background color.
        ==========    ==============================================================


        **Scalable Vector Graphics (SVG)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.BytesIO
        kind             "svg" or "svgz" (to create a gzip compressed SVG)
        scale            integer or float
        color            Default: "#000" (black)
                         ``None`` is a valid value. If set to ``None``, the resulting
                         path won't have a "stroke" attribute. The "stroke" attribute
                         may be defined via CSS (external).
                         If an alpha channel is defined, the output depends of the
                         used SVG version. For SVG versions >= 2.0, the "stroke"
                         attribute will have a value like "rgba(R, G, B, A)", otherwise
                         the path gets another attribute "stroke-opacity" to emulate
                         the alpha channel.
                         To minimize the document size, the SVG serializer uses
                         automatically the shortest color representation: If
                         a value like "#000000" is provided, the resulting
                         document will have a color value of "#000". If the color
                         is "#FF0000", the resulting color is not "#F00", but
                         the web color name "red".
        background       Default value ``None``. If this paramater is set to another
                         value, the resulting image will have another path which
                         is used to define the background color.
                         If an alpha channel is used, the resulting path may
                         have a "fill-opacity" attribute (for SVG version < 2.0)
                         or the "fill" attribute has a "rgba(R, G, B, A)" value.
                         See keyword "color" for further details.
        xmldecl          Boolean value (default: ``True``) indicating whether the
                         document should have an XML declaration header.
                         Set to ``False`` to omit the header.
        svgns            Boolean value (default: ``True``) indicating whether the
                         document should have an explicit SVG namespace declaration.
                         Set to ``False`` to omit the namespace declaration.
                         The latter might be useful if the document should be
                         embedded into a HTML 5 document where the SVG namespace
                         is implicitly defined.
        title            String (default: ``None``) Optional title of the generated
                         SVG document.
        desc             String (default: ``None``) Optional description of the
                         generated SVG document.
        svgid            A string indicating the ID of the SVG document
                         (if set to ``None`` (default), the SVG element won't have
                         an ID).
        svgclass         Default: "segno". The CSS class of the SVG document
                         (if set to ``None``, the SVG element won't have a class).
        lineclass        Default: "qrline". The CSS class of the path element
                         (which draws the dark modules (if set to ``None``, the path
                         won't have a class).
        omitsize         Indicates if width and height attributes should be
                         omitted (default: ``False``). If these attributes are
                         omitted, a ``viewBox`` attribute will be added to the
                         document.
        unit             Default: ``None``
                         Inidctaes the unit for width / height and other coordinates.
                         By default, the unit is unspecified and all values are
                         in the user space.
                         Valid values: em, ex, px, pt, pc, cm, mm, in, and percentages
                         (any string is accepted, this parameter is not validated
                         by the serializer)
        encoding         Encoding of the XML document. "utf-8" by default.
        svgversion       SVG version (default: ``None``). If specified (a float),
                         the resulting document has an explicit "version" attribute.
                         If set to ``None``, the document won't have a "version"
                         attribute. This parameter is not validated.
        compresslevel    Default: 9. This parameter is only valid, if a compressed
                         SVG document should be created (file extension "svgz").
                         1 is fastest and produces the least compression, 9 is slowest
                         and produces the most. 0 is no compression.
        =============    ==============================================================


        **Portable Network Graphics (PNG)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.BytesIO
        kind             "png"
        scale            integer
        color            Default: "#000" (black)
                         ``None`` is a valid value iff background is not ``None``.
        background       Default value ``#fff`` (white)
                         See keyword "color" for further details.
        compresslevel    Default: 9. Integer indicating the compression level
                         for the ``IDAT`` (data) chunk.
                         1 is fastest and produces the least compression, 9 is slowest
                         and produces the most. 0 is no compression.
        dpi              Default: None. Specifies the DPI value for the image.
                         By default, the DPI value is unspecified. Please note
                         that the DPI value is converted into meters (maybe with
                         rounding errors) since PNG does not support the unit
                         "dots per inch".
        addad            Boolean value (default: True) to (dis-)allow a "Software"
                         comment indicating that the file was created by Segno.
        =============    ==============================================================


        **Encapsulated PostScript (EPS)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.StringIO
        kind             "eps"
        scale            integer or float
        color            Default: "#000" (black)
        background       Default value: ``None`` (no background)
        =============    ==============================================================


        **Portable Document Format (PDF)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.BytesIO
        kind             "pdf"
        scale            integer or float
        compresslevel    Default: 9. Integer indicating the compression level.
                         1 is fastest and produces the least compression, 9 is slowest
                         and produces the most. 0 is no compression.
        =============    ==============================================================


        **Text (TXT)**

        Does not support the "scale" keyword!

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.StringIO
        kind             "txt"
        color            Default: "1"
        background       Default: "0"
        =============    ==============================================================


        **ANSI escape code**

        Supports the "border" keyword, only!

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        kind             "ans"
        =============    ==============================================================


        **Portable Bitmap (PBM)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.BytesIO
        kind             "pbm"
        scale            integer
        plain            Default: False. Boolean to switch between the P4 and P1 format.
                         If set to ``True``, the (outdated) P1 serialization format is
                         used.
        =============    ==============================================================


        **Portable Arbitrary Map (PAM)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.BytesIO
        kind             "pam"
        scale            integer
        color            Default: "#000" (black).
        background       Default value ``#fff`` (white). Use ``None`` for a transparent
                         background.
        =============    ==============================================================


        **LaTeX / PGF/TikZ**

        To use the output of this serializer, the ``PGF/TikZ`` (and optionally
        ``hyperref``) package is required in the LaTeX environment. The
        serializer itself does not depend on any external packages.

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.StringIO
        kind             "tex"
        scale            integer or float
        color            LaTeX color name (default: "black"). The color is written
                         "at it is", so ensure that the color is a standard color or it
                         has been defined in the enclosing LaTeX document.
        url              Default: ``None``. Optional URL where the QR Code should
                         point to. Requires the ``hyperref`` package in your LaTeX
                         environment.
        =============    ==============================================================


        **X BitMap (XBM)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.StringIO
        kind             "xbm"
        scale            integer
        name             Name of the variable (default: "img")
        =============    ==============================================================


        **X PixMap (XPM)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.StringIO
        kind             "xpm"
        scale            integer
        color            Default: "#000" (black).
        background       Default value ``#fff`` (white)
                         ``None`` indicates a transparent background.
        name             Name of the variable (default: "img")
        =============    ==============================================================


        :param out: A filename or a writable file-like object with a
                ``name`` attribute. Use the `kind` parameter if `out` is
                a :py:class:`io.ByteIO` or :py:class:`io.StringIO` stream which
                don't have a ``name`` attribute.
        :param kind: If the desired output format cannot be determined from
                the ``out`` parameter, this parameter can be used to indicate the
                serialization format (i.e. "svg" to enforce SVG output)
        :param kw: Any of the supported keywords by the specific serialization
                method.
        """
        writers.save(self.matrix, self._version, out, kind, **kw)
\
        Serializes the QR Code in one of the supported formats.
        The serialization format depends on the filename extension.

        **Common keywords**


        ==========    ==============================================================
        Name          Description
        ==========    ==============================================================
        scale         Integer or float indicating the size of a single module.
                      Default: 1. The interpretation of the scaling factor depends
                      on the serializer. For pixel-based output (like PNG) the
                      scaling factor is interepreted as pixel-size (1 = 1 pixel).
                      EPS interprets ``1`` as 1 point (1/72 inch) per module.
                      Some serializers (like SVG) accept float values. If the
                      serializer does not accept float values, the value will be
                      converted to an integer value (note: int(1.6) == 1).
        border        Integer indicating the size of the quiet zone.
                      If set to ``None`` (default), the recommended border size
                      will be used (``4`` for QR Codes, ``2`` for a Micro QR Codes).
        color         A string or tuple representing a color value for the dark
                      modules. The default value is "black".  The color can be
                      provided as ``(R, G, B)`` tuple, as web color name
                      (like "red") or in hexadecimal format (``#RGB`` or
                      ``#RRGGBB``). Some serializers (SVG and PNG) accept an alpha
                      transparency value like ``#RRGGBBAA``.
        background    A string or tuple representing a color for the light modules
                      or background. See "color" for valid values.
                      The default value depends on the serializer. SVG uses no
                      background color (``None``) by default, other serializers
                      use "white" as default background color.
        ==========    ==============================================================


        **Scalable Vector Graphics (SVG)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.BytesIO
        kind             "svg" or "svgz" (to create a gzip compressed SVG)
        scale            integer or float
        color            Default: "#000" (black)
                         ``None`` is a valid value. If set to ``None``, the resulting
                         path won't have a "stroke" attribute. The "stroke" attribute
                         may be defined via CSS (external).
                         If an alpha channel is defined, the output depends of the
                         used SVG version. For SVG versions >= 2.0, the "stroke"
                         attribute will have a value like "rgba(R, G, B, A)", otherwise
                         the path gets another attribute "stroke-opacity" to emulate
                         the alpha channel.
                         To minimize the document size, the SVG serializer uses
                         automatically the shortest color representation: If
                         a value like "#000000" is provided, the resulting
                         document will have a color value of "#000". If the color
                         is "#FF0000", the resulting color is not "#F00", but
                         the web color name "red".
        background       Default value ``None``. If this paramater is set to another
                         value, the resulting image will have another path which
                         is used to define the background color.
                         If an alpha channel is used, the resulting path may
                         have a "fill-opacity" attribute (for SVG version < 2.0)
                         or the "fill" attribute has a "rgba(R, G, B, A)" value.
                         See keyword "color" for further details.
        xmldecl          Boolean value (default: ``True``) indicating whether the
                         document should have an XML declaration header.
                         Set to ``False`` to omit the header.
        svgns            Boolean value (default: ``True``) indicating whether the
                         document should have an explicit SVG namespace declaration.
                         Set to ``False`` to omit the namespace declaration.
                         The latter might be useful if the document should be
                         embedded into a HTML 5 document where the SVG namespace
                         is implicitly defined.
        title            String (default: ``None``) Optional title of the generated
                         SVG document.
        desc             String (default: ``None``) Optional description of the
                         generated SVG document.
        svgid            A string indicating the ID of the SVG document
                         (if set to ``None`` (default), the SVG element won't have
                         an ID).
        svgclass         Default: "segno". The CSS class of the SVG document
                         (if set to ``None``, the SVG element won't have a class).
        lineclass        Default: "qrline". The CSS class of the path element
                         (which draws the dark modules (if set to ``None``, the path
                         won't have a class).
        omitsize         Indicates if width and height attributes should be
                         omitted (default: ``False``). If these attributes are
                         omitted, a ``viewBox`` attribute will be added to the
                         document.
        unit             Default: ``None``
                         Inidctaes the unit for width / height and other coordinates.
                         By default, the unit is unspecified and all values are
                         in the user space.
                         Valid values: em, ex, px, pt, pc, cm, mm, in, and percentages
                         (any string is accepted, this parameter is not validated
                         by the serializer)
        encoding         Encoding of the XML document. "utf-8" by default.
        svgversion       SVG version (default: ``None``). If specified (a float),
                         the resulting document has an explicit "version" attribute.
                         If set to ``None``, the document won't have a "version"
                         attribute. This parameter is not validated.
        compresslevel    Default: 9. This parameter is only valid, if a compressed
                         SVG document should be created (file extension "svgz").
                         1 is fastest and produces the least compression, 9 is slowest
                         and produces the most. 0 is no compression.
        =============    ==============================================================


        **Portable Network Graphics (PNG)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.BytesIO
        kind             "png"
        scale            integer
        color            Default: "#000" (black)
                         ``None`` is a valid value iff background is not ``None``.
        background       Default value ``#fff`` (white)
                         See keyword "color" for further details.
        compresslevel    Default: 9. Integer indicating the compression level
                         for the ``IDAT`` (data) chunk.
                         1 is fastest and produces the least compression, 9 is slowest
                         and produces the most. 0 is no compression.
        dpi              Default: None. Specifies the DPI value for the image.
                         By default, the DPI value is unspecified. Please note
                         that the DPI value is converted into meters (maybe with
                         rounding errors) since PNG does not support the unit
                         "dots per inch".
        addad            Boolean value (default: True) to (dis-)allow a "Software"
                         comment indicating that the file was created by Segno.
        =============    ==============================================================


        **Encapsulated PostScript (EPS)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.StringIO
        kind             "eps"
        scale            integer or float
        color            Default: "#000" (black)
        background       Default value: ``None`` (no background)
        =============    ==============================================================


        **Portable Document Format (PDF)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.BytesIO
        kind             "pdf"
        scale            integer or float
        compresslevel    Default: 9. Integer indicating the compression level.
                         1 is fastest and produces the least compression, 9 is slowest
                         and produces the most. 0 is no compression.
        =============    ==============================================================


        **Text (TXT)**

        Does not support the "scale" keyword!

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.StringIO
        kind             "txt"
        color            Default: "1"
        background       Default: "0"
        =============    ==============================================================


        **ANSI escape code**

        Supports the "border" keyword, only!

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        kind             "ans"
        =============    ==============================================================


        **Portable Bitmap (PBM)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.BytesIO
        kind             "pbm"
        scale            integer
        plain            Default: False. Boolean to switch between the P4 and P1 format.
                         If set to ``True``, the (outdated) P1 serialization format is
                         used.
        =============    ==============================================================


        **Portable Arbitrary Map (PAM)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.BytesIO
        kind             "pam"
        scale            integer
        color            Default: "#000" (black).
        background       Default value ``#fff`` (white). Use ``None`` for a transparent
                         background.
        =============    ==============================================================


        **LaTeX / PGF/TikZ**

        To use the output of this serializer, the ``PGF/TikZ`` (and optionally
        ``hyperref``) package is required in the LaTeX environment. The
        serializer itself does not depend on any external packages.

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.StringIO
        kind             "tex"
        scale            integer or float
        color            LaTeX color name (default: "black"). The color is written
                         "at it is", so ensure that the color is a standard color or it
                         has been defined in the enclosing LaTeX document.
        url              Default: ``None``. Optional URL where the QR Code should
                         point to. Requires the ``hyperref`` package in your LaTeX
                         environment.
        =============    ==============================================================


        **X BitMap (XBM)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.StringIO
        kind             "xbm"
        scale            integer
        name             Name of the variable (default: "img")
        =============    ==============================================================


        **X PixMap (XPM)**

        =============    ==============================================================
        Name             Description
        =============    ==============================================================
        out              Filename or io.StringIO
        kind             "xpm"
        scale            integer
        color            Default: "#000" (black).
        background       Default value ``#fff`` (white)
                         ``None`` indicates a transparent background.
        name             Name of the variable (default: "img")
        =============    ==============================================================


        :param out: A filename or a writable file-like object with a
                ``name`` attribute. Use the `kind` parameter if `out` is
                a :py:class:`io.ByteIO` or :py:class:`io.StringIO` stream which
                don't have a ``name`` attribute.
        :param kind: If the desired output format cannot be determined from
                the ``out`` parameter, this parameter can be used to indicate the
                serialization format (i.e. "svg" to enforce SVG output)
        :param kw: Any of the supported keywords by the specific serialization
                method.