SVG als Medienobjekt (Bild) in IPS

In einem Skript wird ein SVG Code für ein Bild erzeugt. Gibt es eine einfache Möglichkeit, dieses Bild/diesen Code in ein Bild-Objekt zu quetschen? Für eine andere Verwendung?

Mit IPS_SetMediaContent einfach den SVG Code in den Inhalt eines Medien Objektes (ich würde aber Typ Document nutzen) schreiben.

Das hätte ich probiert, müsste aber Typ Bild sein.

SVG ist ein Textformat wie HTML und SVGs muss doch eh der Client rendern, darum meinte ich Typ Document.
Anzeigen kann die Konsole das imho eh nicht.
Du musst es also wieder mit IPS_GetMediaContent auslesen um es dann weiter nutzen zu können.

Mache ich auch mit mp4 Datein und funktioniert prima

Hm, dann muss ich das umwandeln. Ich möchte mit der Universalkachel etwas probieren. Ich möchte der ein zyklisch verändertes Bild unterschieben. Derzeit wird eni SVG generiert und als HTML Objekt angezeigt. Ist jetzt mal nur ein PoC.

Eventuell damit?

IPS läuft bei mir auf Win10 mit installiertem Chrome, wobei das auch mit dem Chromium funktionieren sollte.

Daher hab ich das mal ausprobiert. Die Erstellung funktioniert und auch die Universalgerätekachel reagiert auf die Änderung vom Bild.

<?php
$svgPath = 'test.svg';
$outWebp = 'c:\ProgramData\Symcon\scripts\output.webp';
$width = 170;
$height = 283; // 0 = automatisch, falls SVG viewBox vorhanden

$cmd = sprintf(
    '"C:\Program Files\Google\Chrome\Application\chrome.exe" --headless --disable-gpu --screenshot=%s --window-size=%dx%d %s',
    escapeshellarg($outWebp),
    $width,
    $height ?: 800,
    escapeshellarg('file://' . realpath($svgPath))
);
exec($cmd, $output, $ret);
if ($ret !== 0) {
    throw new RuntimeException("Konvertierung fehlgeschlagen (exit $ret)");
}
echo "WebP erstellt: $outWebp\n";

Also die Umwandlung mit Chrome funktioniert. Hat aber zwei entscheidende Nachteile. Zum einen braucht das viel CPU, da zumindest bei Win10/Win11 sehr viele Chrome Prozesse gestartet werden und selbst auf einer 4 vCPU alle zu 100% ausgelastet werden. Diesem Problem könnte man im Zweifel mit mehr Leistung entgegenwirken. Das viel schlimmere ist aber, dass es mir die Platte im C:\windows\temp vollgemüllt hat. Da wurden rund 10GB vom Chrome Headless abgelegt. Ich habe es nur durch Zufall bemerkt, weil die Console von IPS gemeint hat, die Platte ist voll. Ich hab das einfach alles gelöscht.

Ist eher nicht so zur Nachahmung geeignet.

1 „Gefällt mir“