Aztec-Code ********** Aztec-Code ist eine 2D-Symbologie, die auf Fahrscheinen, Bordkarten und in Patientenakten verwendet wird. Er benötigt keine Ruhezone, und sein starkes zentrales Bullseye-Suchmuster wird in jeder Drehlage zuverlässig decodiert. Symbole reichen von 15x15 Modulen (kompakt) bis 151x151 (Full-Range). Neu in Version 0.14: Die Unterstützung für Aztec-Code wurde in dieser Version hinzugefügt. Siehe auch: Aztec-Code auf Wikipedia für Hintergründe zur Symbologie selbst. Aztec-Code ist in ISO/IEC 24778 definiert (Informationstechnik -- Automatische Identifikations- und Datenerfassungsverfahren -- Spezifikation der Barcode-Symbologie Aztec Code). Beispiel ======== from pystrich.aztec import AztecEncoder encoder = AztecEncoder("https://github.com/mmulqueen/pyStrich") encoder.save_svg("aztec-example.svg") [Bild: Aztec-Code, der die pyStrich-GitHub-URL codiert.][Bild] Größe ===== Das Argument "cellsize" von "save()" und "get_imagedata()" legt die Kantenlänge eines Moduls in Pixeln fest (Vorgabe "5"). Aztec-Code benötigt keine Ruhezone, aber pyStrich fügt standardmäßig einen Rand von 2 Modulen hinzu, um Scannern einen stabilen Hintergrund zu geben. Übergeben Sie "quiet_zone=" an "AztecEncoder", um die Randbreite (in Modulen) pro Aufruf zu ändern; übergeben Sie "0", um den Rand ganz wegzulassen. AztecEncoder("Hello", quiet_zone=0).save("aztec-no-margin.png") Siehe auch: Barcodes drucken für Hinweise zur Wahl von "cellsize" bei gedruckter Ausgabe. encoder = AztecEncoder("https://github.com/mmulqueen/pyStrich") encoder.save("aztec-large.png", cellsize=10) [Bild: Aztec-Code, der die pyStrich-GitHub-URL codiert, gerendert mit cellsize=10.][Bild] Ausgabeformate ============== SVG-Ausgabe ----------- Zum Einbetten in Webseiten oder für jeden Arbeitsablauf, der von auflösungsunabhängiger Ausgabe profitiert, verwenden Sie "save_svg()" (oder "get_svg()", um das SVG als Zeichenkette zu erhalten). from pystrich.marks import MarkShape AztecEncoder("https://github.com/mmulqueen/pyStrich").save_svg("aztec.svg") AztecEncoder("https://github.com/mmulqueen/pyStrich").save_svg( "aztec-circles.svg", mark_shape=MarkShape.CIRCULAR_CELLS ) Die "viewBox" des SVG ist in Moduleinheiten angegeben, während "width" und "height" mit "cellsize" skalieren. Das Schlüsselwort "mark_shape" bestimmt, wie gesetzte Zellen gezeichnet werden -- horizontale Folgen von Rechtecken (die Vorgabe) oder ein gefüllter Kreis pro Zelle. PNG-Ausgabe ----------- Verwenden Sie für die Rasterausgabe "save()", um eine PNG-Datei zu schreiben, oder "get_imagedata()", um die rohen PNG-Bytes zu erhalten. AztecEncoder("https://github.com/mmulqueen/pyStrich").save("aztec.png") EPS-Ausgabe ----------- Verwenden Sie zum Einbetten in LaTeX ("\includegraphics") oder andere Vektor-Druck-Arbeitsabläufe "save_eps()" (oder "get_eps()", um das EPS als Zeichenkette zu erhalten). AztecEncoder("https://github.com/mmulqueen/pyStrich").save_eps("aztec.eps") Das Argument "cellsize" ist die Kantenlänge eines Moduls in PostScript-Punkten (1 Punkt = 1/72 Zoll). Terminal-Ausgabe ---------------- Für schnelle Anzeige auf dem Bildschirm liefert "get_terminal_art()" eine vom Scanner lesbare Darstellung mit Unicode-Halbblockzeichen. Jedes Zeichen steht für zwei Matrixzeilen und eine Spalte, sodass die Zellen in einer typischen Terminalschrift mit fester Breite ungefähr quadratisch erscheinen. print(AztecEncoder("https://github.com/mmulqueen/pyStrich").get_terminal_art()) █▀▄▀▄ █ ▀▄▄▄▀▄█ █▀▀█ █▄ ▄ █▀▀▀ ▄█▄▀▄█▄▄▄ ▀▄▄▄ ▄▀ ▄ █▄▄▀▀▀▄ ██▄ ▀ ▀ █▄█ ▀▀███▄▄███▄▄█▄▀▄ ▄ █ ▀ █ █ ▄▄▄▄▄ █ █▄█▄▀▀ ▀ ▄█▀▄ █ █ ▄ █ █▄▀ ▄ ▄ ▀█ █▀▀▀█ █▄▄▄█ █ ▀▄▀ ▄ ▀▀▀█ █▄▄▄▄▄▄▄█▄█▀▄ ▄▀ ▄█ ▄█ ▄▀█ █▀▄ █ ▄▄ ▀ █▄█ █▀ ▀▀ ▄▄▄▄▄ ▄▄ ▄ ▄▄ ▀ █▀▀ ▀ █▄████▀█▄▀ ▀▀ ▀ ▀ ▀ Standardmäßig wird die Ausgabe von ANSI-Escape-Codes umschlossen, die einen weißen Hintergrund und schwarzen Vordergrund erzwingen, sodass das Symbol unabhängig vom Farbschema des Terminals eingelesen werden kann. Übergeben Sie "ansi_bg=False" für eine einfache Ausgabe (nur auf einem hell gestalteten Terminal korrekt). DXF-Ausgabe (CAD) ----------------- Für Anwendungen zur direkten Teilekennzeichnung (*direct part marking*) liefert "get_dxf()" eine DXF-Darstellung des Symbols, die CAD- und CAM-Werkzeuge direkt lesen können. Die "cellsize" ist in Ihrer gewählten Einheit "units" (Vorgabe ""mm"") statt in Pixeln angegeben. encoder = AztecEncoder("WDBCA45D2HA327260") with open("part.dxf", "w") as f: f.write(encoder.get_dxf(cellsize=0.5, units="mm")) Die Vorgabe "inverse=True" gibt Geometrie für die hellen Module aus, einschließlich der Ruhezone -- sodass der Begrenzungsrahmen (*bounding box*) das Symbol einrahmt. Übergeben Sie "inverse=False", um stattdessen nur die dunklen Module auszugeben, was dem normalen Erscheinungsbild des Symbols entspricht; der Begrenzungsrahmen schmiegt sich dann an die dunklen Zellen an und die Ruhezone muss in der nachgelagerten Verarbeitung wieder hinzugefügt werden. Symboltyp und -größe ==================== Aztec-Code gibt es in zwei Formaten: * **Kompakt**-Symbole sind 15x15 bis 27x27 Module groß (1-4 Datenschichten) und tragen bis zu 76 Codewörter. Verwenden Sie sie für kurze Nutzdaten, wenn der Platz knapp ist. * **Full-Range**-Symbole sind 19x19 bis 151x151 Module groß (1-32 Datenschichten) und tragen bis zu 1664 Codewörter. Ein Referenzraster durchzieht die größeren Symbole, um Scanner über das gesamte Symbol ausgerichtet zu halten. Mit der Vorgabe "symbol_kind="auto"" wählt der Encoder das kleinste Symbol, das die Nutzdaten beim angeforderten Fehlerkorrektur- Prozentsatz aufnimmt. Bei gleicher Modulanzahl wird Kompakt gegenüber Full-Range bevorzugt. # Force a full-range symbol even for short input. AztecEncoder("Hello", symbol_kind="full").save("aztec-full.png") # Pin both kind and layer count for a fixed symbol size. AztecEncoder("WDBCA45D2HA327260", symbol_kind="full", layers=5).save( "aztec-full-l5.png" ) Das Festlegen von "layers" erfordert ein explizites "symbol_kind"; andernfalls löst der Encoder "PyStrichInvalidOption" aus. Wenn die Nutzdaten in der angeforderten Größe nicht passen, löst er "PyStrichInvalidInput" aus. Fehlerkorrektur =============== Aztec-Code bettet redundante Daten ein, sodass ein teilweise beschädigtes Symbol noch gelesen werden kann. Anders als die diskreten Stufen des QR-Codes wird die Redundanz als ganzzahliger Prozentsatz von 5-95 über das Argument "ecc" festgelegt; der Encoder fügt den angeforderten Prozentsatz der Symbolkapazität plus 3 Codewörter hinzu: # Default: 23% -- the spec's recommended minimum. AztecEncoder("WDBCA45D2HA327260").save("aztec-default.png") # 50% redundancy for harsher environments. AztecEncoder("WDBCA45D2HA327260", ecc=50).save("aztec-high.png") Höhere Prozentsätze erzeugen ein dichteres Symbol für dieselben Nutzdaten (oder erfordern entsprechend ein größeres Symbol, um dieselben Nutzdaten aufzunehmen). Die Vorgabe von 23 % ist der in der Spezifikation empfohlene Mindestwert für den allgemeinen Gebrauch; wählen Sie höhere Werte für Symbole, die wahrscheinlich teilweise verdeckt oder auf Oberflächen gedruckt werden, die zerkratzt, verschmiert oder eingerissen werden könnten. Nicht-ASCII-Text ================ "AztecEncoder" akzeptiert jede Unicode-Zeichenkette direkt und wählt den schmalsten passenden Zeichensatz. Kapseln Sie die Eingabe nur dann in "AztecData", wenn Sie diese Wahl einschränken möchten -- zum Beispiel, um ""ascii"" zu erzwingen, sodass ein versehentliches Nicht- ASCII-Zeichen einen Fehler auslöst, statt das Symbol stillschweigend zu vergrößern: +------------------+---------------------------------------------------------------------+ | Codierung | Verhalten | |==================|=====================================================================| | ""ascii"" | Löst "PyStrichInvalidInput" bei jedem Byte > 127 aus. | +------------------+---------------------------------------------------------------------+ | ""iso-8859-1"" | Latin-1. Deklariert am Anfang des Symbols ECI 3, damit Decoder bei | | | hohen Bytes nicht auf ASCII-Heuristiken zurückfallen. | +------------------+---------------------------------------------------------------------+ | ""utf-8"" | Deklariert ECI 26 und codiert die Eingabe byteweise. Konforme | | | Decoder erkennen die Codierung automatisch. | +------------------+---------------------------------------------------------------------+ Tipp: Die automatisch gewählte Codierung ist immer die schmalste passende, sodass die Übergabe eines einfachen "str" bereits das kleinste Symbol ergibt. Eine Codierung von Hand zu wählen ist vor allem für die Eingabevalidierung nützlich -- z. B. um an der Grenze alles außerhalb von ASCII abzulehnen. # Plain str: Latin-1 picked automatically, ECI 3 emitted. AztecEncoder("Ich dachte, Sie wären kräftiger").save("latin1.png") [Bild: Aztec-Code, der "Ich dachte, Sie wären kräftiger" als Latin-1 codiert.][Bild] # Plain str: UTF-8 picked automatically, ECI 26 emitted. AztecEncoder("€5 親切にしろ 🐻‍❄️").save("utf8.png") [Bild: Aztec-Code, der "€5 親切にしろ 🐻‍❄️" als UTF-8 (ECI 26) codiert.][Bild] Wenn Sie eine Codierung festlegen, die nicht zur Eingabe passt, schlägt der ausgelöste Fehler die Codierung vor, die funktioniert *hätte*: >>> from pystrich.aztec import AztecData >>> AztecData("Ich dachte, Sie wären kräftiger", encoding="ascii") Traceback (most recent call last): ... pystrich.exceptions.PyStrichInvalidInput: AztecData encoding ASCII cannot encode the input; try AztecData('Ich dachte, Sie wären kräftiger', encoding='iso-8859-1') or pass auto_encoding=True to select an encoding automatically. Aztec Runes =========== Aztec Runes -- winzige Ein-Byte-Symbole im Aztec-Stil -- werden nicht unterstützt. Falls Sie sie benötigen, können Sie sie auf den Geometrie-Primitiven in "pystrich.aztec.placement" aufbauen. Bitte eröffnen Sie ein Issue auf GitHub, das beschreibt, was Sie brauchen. Aufbau ====== Aztec-Symbole kombinieren einige feste Strukturelemente mit einem variablen Datenbereich. Das Diagramm unten beschriftet ein Full-Range- Symbol mit 5 Schichten (37x37 Module); kompakte Symbole verwenden dieselben Teile in einem kleineren Kern und lassen das Referenzraster weg. [Bild: Beschrifteter Aztec-Code, der das Bullseye-Suchmuster, die Orientierungsmarken, die Modusinformation, das Referenzraster, die Datenschichten und die Ruhezone zeigt.][Bild] * **Bullseye-Suchmuster** (*bullseye finder*) -- konzentrische zentrale Quadrate (9x9 in kompakten Symbolen, 13x13 in Full-Range). Das charakteristische Muster des Aztec; Scanner rasten in jeder Drehlage darauf ein. * **Orientierungsmarken** (*orientation marks*) -- L-förmige Drei- Zellen-Muster an jeder Ecke des Kerns; die Anzahl der dunklen Zellen nimmt im Uhrzeigersinn ab (3, 2, 1, 0) und codiert die Drehung des Symbols. * **Modusinformation** (*mode message*) -- der äußerste Ring des Kerns (eine Zelle breit), der die Anzahl der Schichten und *Codewörter* des Symbols codiert, sodass der Decoder weiß, wie groß der Datenbereich ist. * **Referenzraster** (*reference grid*) -- vereinzelte Streifen aus abwechselnd dunklen und hellen Zellen, die Full-Range-Symbole alle 16 Module durchziehen, um Scanner ausgerichtet zu halten. Kompakte Symbole benötigen es nicht. * **Datenschichten** (*data layers*) -- konzentrische Modulringe, die die Nutzdaten plus *Reed-Solomon*-Fehlerkorrektur tragen. Die Anzahl der Schichten bestimmt die Symbolgröße. * **Ruhezone** (*quiet zone*) -- weißer Rand um das Symbol; von der Spezifikation nicht verlangt. API === class AztecEncoder(text: str | AztecData, *, ecc: int = 23, symbol_kind: Literal['auto', 'compact', 'full'] = 'auto', layers: int | None = None, quiet_zone: int = 2) Bases: "Matrix2DEncoder"["int"] Codiert Text als Aztec-Code-2D-Barcode. Ein einfacher "str" wird mit dem schmalsten passenden Zeichensatz codiert: ASCII, Latin-1 (ECI 3) oder UTF-8 (ECI 26). Übergeben Sie ein "AztecData", um die Codierung explizit festzulegen. Typische Verwendung: encoder = AztecEncoder("https://github.com/mmulqueen/pyStrich") encoder.save("aztec.png") Variablen: * **matrix** -- 2D-Liste, die das Symbol vor dem Rendern beschreibt. * **quiet_zone** -- Breite des beim Rendern angewendeten weißen Rands in Modulen. * **width** -- Pixelbreite des zuletzt gerenderten Bildes. * **height** -- Pixelhöhe des zuletzt gerenderten Bildes. get_ascii() -> str Gibt eine ASCII-Art-Darstellung des Symbols zurück. Rückgabetyp: str get_dxf(cellsize: float = 1.0, inverse: bool = True, units: Literal['in', 'ft', 'mi', 'mm', 'cm', 'm'] | None = 'mm', *, mark_shape: MarkShape = MarkShape.SQUARE_CELLS) -> str Gibt eine DXF-Darstellung (CAD) des Symbols zurück. Parameter: * **cellsize** -- Kantenlänge eines Moduls in "units". * **inverse** -- Wenn "True" (die Vorgabe), werden helle Module als gefüllte Zellen gezeichnet. Wenn "False", werden dunkle Module gezeichnet, was dem normalen Erscheinungsbild des Symbols entspricht. * **units** -- Eines von ""in"", ""ft"", ""mi"", ""mm"", ""cm"" oder ""m"" oder "None" für nicht angegeben ("$INSUNITS=0"). * **mark_shape** -- Wie gesetzte Zellen gruppiert und gezeichnet werden. Rückgabetyp: str get_eps(cellsize: int = 5, *, inverse: bool = False, mark_shape: MarkShape = MarkShape.HORIZONTAL_RUNS, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) -> str Rendert das Symbol und gibt EPS-Markup zurück. Parameter: * **cellsize** -- Kantenlänge eines Moduls in PostScript- Punkten. * **inverse** -- Wenn "True", die hellen statt der dunklen Zellen markieren. * **mark_shape** -- Wie gesetzte Zellen gruppiert und gezeichnet werden. * **dark_hex** -- Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Schwarz. * **light_hex** -- Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder "RGBA", deckend. Standard ist Weiß. Rückgabetyp: str Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefügt. get_imagedata(cellsize: int = 5, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) -> bytes Rendert das Symbol und gibt PNG-Bytes zurück. Parameter: * **cellsize** -- Kantenlänge eines Moduls in Pixeln. * **dark_hex** -- Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Schwarz. * **light_hex** -- Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Weiß. Rückgabe: PNG-codierte Bilddaten. Rückgabetyp: bytes Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefügt. get_pilimage(cellsize: int = 5, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) -> PILImage Rendert das Symbol und gibt ein Pillow-Bild zurück. Parameter: * **cellsize** -- Kantenlänge eines Moduls in Pixeln. * **dark_hex** -- Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Schwarz. * **light_hex** -- Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Weiß. Rückgabe: Das gerenderte Symbol. Rückgabetyp: PIL.Image.Image Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefügt. get_svg(cellsize: int = 5, *, inverse: bool = False, mark_shape: MarkShape = MarkShape.HORIZONTAL_RUNS, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) -> str Rendert das Symbol und gibt SVG-Markup zurück. Parameter: * **cellsize** -- Kantenlänge eines Moduls in Benutzereinheiten. * **inverse** -- Wenn "True", die hellen statt der dunklen Zellen markieren. * **mark_shape** -- Wie gesetzte Zellen gruppiert und gezeichnet werden. * **dark_hex** -- Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Schwarz. * **light_hex** -- Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Weiß. Rückgabetyp: str Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefügt. get_terminal_art(*, ansi_bg: bool = True) -> str Rendert das Symbol mit Unicode-Halbblockzeichen für Terminals. Jedes Zeichen steht für zwei Matrixzeilen und eine Spalte, erzeugt näherungsweise quadratische Zellen in einer typischen Schrift mit fester Breite und liefert ein Ergebnis, das auf dem Bildschirm vom Scanner lesbar ist. Parameter: **ansi_bg** -- Wenn "True" (die Vorgabe), jede Zeile in ANSI- Escape-Codes einschließen, die einen weißen Hintergrund und schwarzen Vordergrund erzwingen, sodass das Symbol unabhängig vom Farbschema des Terminals vom Scanner lesbar ist. Setzen Sie ihn auf "False" für eine einfache Ausgabe (nur auf einem hell gestalteten Terminal korrekt). Rückgabetyp: str init_renderer() -> AztecRenderer Konstruiert einen "AztecRenderer" für die codierte Matrix. png_dataurl(cellsize: int = 5, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) -> str Rendert das Symbol und gibt einen PNG-"data:"-URL-String zurück. Parameter: * **cellsize** -- Kantenlänge eines Moduls in Pixeln. * **dark_hex** -- Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Schwarz. * **light_hex** -- Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Weiß. Rückgabetyp: str Neu in Version 0.15. Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefügt. save(filename: str | os.PathLike[str], cellsize: int = 5, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) -> None Speichert das Symbol als PNG. Übergeben Sie einen ".png"-Dateinamen. Parameter: * **filename** -- PNG-Ausgabepfad. * **cellsize** -- Kantenlänge eines Moduls in Pixeln. * **dark_hex** -- Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Schwarz. * **light_hex** -- Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Weiß. Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefügt. save_eps(filename: str | os.PathLike[str], cellsize: int = 5, *, inverse: bool = False, mark_shape: MarkShape = MarkShape.HORIZONTAL_RUNS, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) -> None Speichert das Symbol als EPS-Datei. Übergeben Sie einen ".eps"-Dateinamen. Parameter: * **filename** -- EPS-Ausgabepfad. * **cellsize** -- Kantenlänge eines Moduls in PostScript- Punkten. * **inverse** -- Wenn "True", die hellen statt der dunklen Zellen markieren. * **mark_shape** -- Wie gesetzte Zellen gruppiert und gezeichnet werden. * **dark_hex** -- Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Schwarz. * **light_hex** -- Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder "RGBA", deckend. Standard ist Weiß. Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefügt. save_svg(filename: str | os.PathLike[str], cellsize: int = 5, *, inverse: bool = False, mark_shape: MarkShape = MarkShape.HORIZONTAL_RUNS, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) -> None Speichert das Symbol als SVG-Datei. Übergeben Sie einen ".svg"-Dateinamen. Parameter: * **filename** -- SVG-Ausgabepfad. * **cellsize** -- Kantenlänge eines Moduls in Benutzereinheiten. * **inverse** -- Wenn "True", die hellen statt der dunklen Zellen markieren. * **mark_shape** -- Wie gesetzte Zellen gruppiert und gezeichnet werden. * **dark_hex** -- Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Schwarz. * **light_hex** -- Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Weiß. Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefügt. svg_dataurl(cellsize: int = 5, *, inverse: bool = False, mark_shape: MarkShape = MarkShape.HORIZONTAL_RUNS, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) -> str Rendert das Symbol und gibt einen SVG-"data:"-URL-String zurück. Parameter: * **cellsize** -- Kantenlänge eines Moduls in Benutzereinheiten. * **inverse** -- Wenn "True", die hellen statt der dunklen Zellen markieren. * **mark_shape** -- Wie gesetzte Zellen gruppiert und gezeichnet werden. * **dark_hex** -- Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Schwarz. * **light_hex** -- Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder "RGBA". Standard ist Weiß. Rückgabetyp: str Neu in Version 0.15. Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefügt. class AztecData(*segments: str | MarkerT, encoding: EncT | None = None, auto_encoding: bool = False) Bases: "EncodableData" Encoder-Eingabe mit expliziter Zeichensatz-Wahl. "AztecEncoder" akzeptiert einen einfachen "str" und wählt die Codierung automatisch. Verwenden Sie "AztecData" nur, um die Codierung festzulegen -- erzwingen Sie zum Beispiel ""ascii"", um Nicht-ASCII-Eingaben abzulehnen. Übergeben Sie entweder "encoding=" (eines von ""ascii"", ""iso-8859-1"", ""utf-8"") oder "auto_encoding=True". Mit "auto_encoding=True" wählt der Konstruktor die schmalste passende Codierung; ein etwaiges "encoding="-Argument wird dann ignoriert. as_plain_text() -> tuple[str, EncT] Gibt den verketteten Text und den Codec zum Codieren zurück. Löst "_HasMarkers" aus, wenn ein Segment ein Roh-Marker statt einer Zeichenkette ist. Für Unterklassen ohne Marker ("MarkerT == Never") ist die Prüfung ein No-op.