Freitag, 9 Januar 2026

Diese Woche am beliebtesten

Vertiefendes Material

PHP Smiley Generator

Dieses Dreamcodes Codeschnipsel Script erstellt individuelle Smiley Schild Bilder direkt aus Text und einem Smiley PNG. Es kombiniert dynamisch berechnete Textfelder mit einem zentrierten Smiley und erzeugt dabei skalierbare SVG-Dateien.

Funktionen im Überblick:

  • Dynamische Textanpassung: Der Text wird automatisch umgebrochen und zentriert, egal wie lang er ist.
  • Automatische Smiley-Größenanpassung: Der Smiley passt sich an die Textbreite an, bleibt aber immer gut sichtbar.
  • SVG-Ausgabe: Hochauflösende, skalierbare Grafiken, die ohne Qualitätsverlust vergrößert oder verkleinert werden können.
  • Zufällige Dateinamen: Verhindert das Überschreiben bestehender Dateien.

Einfach Text eingeben, Smiley auswählen, fertig!

<?php
function schildSVG(string $text, string $bild): string
{
    $fontFile = __DIR__ . "/fonts/Arial.ttf";
    if (!is_file($fontFile)) {
        return "Fehler: Schriftart nicht gefunden.";
    }
    $wrapped = wordwrap($text, 20, "\n");
    $lines   = explode("\n", $wrapped);
    $fontSize   = 16;
    $lineHeight = 1.4 * $fontSize;
    $padding    = 10;
    $textWidth = 0;
    foreach ($lines as $line) {
        $bbox = imagettfbbox($fontSize, 0, $fontFile, $line);
        $lineWidth = $bbox[2] - $bbox[0];
        if ($lineWidth > $textWidth) {
            $textWidth = $lineWidth;
        }
    }
    $textHeight = count($lines) * $lineHeight;
    $smilePath = __DIR__ . "/smile/" . basename($bild) . ".png";
    if (!is_file($smilePath)) {
        return "Fehler: Smiley-Vorlage nicht gefunden.";
    }
    [$smileOrigW, $smileOrigH] = getimagesize($smilePath);
    $smileWidth  = max(64, $textWidth);
    $smileHeight = intval($smileOrigH * ($smileWidth / $smileOrigW));
    $width  = $smileWidth + 2 * $padding;
    $height = $textHeight + $smileHeight + 3 * $padding;
    $svg = <<<SVG
<svg xmlns="http://www.w3.org/2000/svg" width="{$width}" height="{$height}">
  <rect x="0" y="0" width="100%" height="100%" fill="rgb(245,252,255)" stroke="black" stroke-width="1"/>
  <rect x="{$padding}" y="{$padding}" width="{$width - 2*$padding}" height="{$textHeight + $padding}" fill="white"/>
SVG;
    $y = $padding + $fontSize;
    foreach ($lines as $line) {
        $svg .= "\n  <text x=\"{$padding}\" y=\"{$y}\" font-family=\"Arial, sans-serif\" font-size=\"{$fontSize}\" fill=\"black\">$line</text>";
        $y += $lineHeight;
    }
    $smileX = ($width - $smileWidth) / 2;
    $smileY = $textHeight + 2 * $padding;
    $svg .= "\n  <image href=\"smile/" . basename($bild) . ".png\" x=\"{$smileX}\" y=\"{$smileY}\" width=\"{$smileWidth}\" height=\"{$smileHeight}\"/>";
    $svg .= "\n</svg>";
    $nr = random_int(1, 999999);
    $outFile = __DIR__ . "/smile/{$nr}.svg";
    file_put_contents($outFile, $svg);
    return "<img src=\"smile/{$nr}.svg\" alt=\"smile\">";
}
?>
Dreamcodes Redaktion
Dreamcodes Redaktion
Jeder auf Dreamcodes bereitgestellte Codeschnipsel sowie jede Tutorial Anleitung basiert auf geprüften Best Practices und fundierter Praxiserfahrung. Ziel ist es, ein belastbares technisches Fundament bereitzustellen und keine unausgereiften oder experimentellen Lösungen zu veröffentlichen. Die konkrete Nutzung, Integration, Anpassung und Absicherung der Inhalte obliegt jedoch dem Anwender. Vor dem produktiven Einsatz sind sämtliche Inhalte eigenverantwortlich zu prüfen, zu testen und gegebenenfalls abzusichern. Dreamcodes stellt die technische Grundlage zur Verfügung, die finale Umsetzung und Verantwortung verbleibt beim Nutzer.
Vorheriges Tutorial
Nächstes Tutorial

Vielleicht einen Blick WERT?