====== std.svg.image ====== Bilder in ein SVG einbetten. Alle Wege kodieren die Daten als **Base64-Data-URI** — eine Referenz auf eine externe Datei gibt es nicht. Zwei Muster: * ''SvgImageFile'' schreibt das Bild **einmal an Ort und Stelle** in den Rumpf. * ''SvgAddImageJpeg''/''SvgAddImagePng''/''SvgAddImageRGB'' legen es in ''%%%%'' ab und liefern eine Bildnummer; ''SvgDrawImage'' und ''SvgDrawImageFit'' setzen es danach beliebig oft ein. → [[lyx_-_programmiersprache:units:svg|std.svg]] · [[lyx_-_programmiersprache:units:svg:builder|std.svg.builder]] · [[lyx_-_programmiersprache:units:svg:defs|std.svg.defs]] ---- ===== Verwendung ===== import std.io; import std.alloc; import std.svg.builder; import std.svg.elements; import std.svg.image; fn main(): int64 { var doc: int64 := SvgNew(400.0, 300.0); SvgSetPrettyPrint(doc, 1); // Datei lesen und an dieser Stelle einbetten (JPEG/PNG per Magic Bytes) SvgImageFile(doc, "logo.png", 50.0, 50.0, 200.0, 150.0); // RGB-Rohdaten: drei Byte je Pixel, zeilenweise var px: int64 := alloc(12); poke8(px, 255); poke8(px + 1, 0); poke8(px + 2, 0); poke8(px + 3, 0); poke8(px + 4, 255); poke8(px + 5, 0); poke8(px + 6, 0); poke8(px + 7, 0); poke8(px + 8, 255); poke8(px + 9, 255); poke8(px + 10, 255); poke8(px + 11, 0); var img: int64 := SvgAddImageRGB(doc, px, 2, 2); // liefert die Bildnummer SvgDrawImage(doc, img, 10.0, 10.0, 32.0, 32.0); SvgDrawImageFit(doc, img, 300.0, 10.0, 64.0, 64.0); Print(SvgToString(doc)); Print("\n"); SvgFree(doc); return 0; } (Die Base64-Ströme sind hier gekürzt.) Ist die Datei nicht lesbar, tut ''SvgImageFile'' **nichts** und meldet nichts — der Aufruf hinterlässt keine Spur im Dokument. Ein Blick auf die Ausgabe ist damit die einzige Prüfung. ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''SvgImageFile(doc: int64, path: pchar, x: f64, y: f64, w: f64, h: f64): void'' | pub | Datei lesen und an dieser Stelle als Data-URI einbetten | | ''SvgAddImageJpeg(doc: int64, path: pchar): int64'' | pub | JPEG in ''%%%%'' ablegen, liefert die Bildnummer | | ''SvgAddImagePng(doc: int64, path: pchar): int64'' | pub | PNG in ''%%%%'' ablegen | | ''SvgAddImageRGB(doc: int64, ptr: int64, w: int64, h: int64): int64'' | pub | RGB-Rohdaten zu PNG wandeln und ablegen | | ''SvgDrawImage(doc: int64, imgId: int64, x: f64, y: f64, w: f64, h: f64): void'' | pub | Abgelegtes Bild einsetzen | | ''SvgDrawImageFit(doc: int64, imgId: int64, x: f64, y: f64, mw: f64, mh: f64): void'' | pub | Einsetzen und in den Rahmen einpassen | Nicht vorhanden: ''SvgImageEmbed'', ''SvgImageBase64'', ''SvgImageFromRGB'', ''SvgImageSymbol'', ''SvgBase64Encode'' und ''SvgPngFromRGB'' — frühere Fassungen dieser Seite führten sie samt Style-Parameter auf. Letzte Aktualisierung: 2026-08-19 — Seite gegen die echten Signaturen neu geschrieben; Beispiel mit ''lyxc 1.1.3I'' übersetzt und gegen ein erzeugtes 2×2-PNG ausgeführt, Ausgabe übernommen (Base64 gekürzt).