kostenloser Webspace werbefrei: lima-city


Problem beim Erzeugen eines Bildes

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    siteplayer

    siteplayer hat kostenlosen Webspace.

    Ich möchte per php einen Text der in HTML verfasst ist als Bild ausgeben.
    Die Hintergrundfarbe des Bildes soll Transparent sein, jedoch habe ich das noch nicht wirklich hinbekommen.
    Meine größten Probleme sind allerdings:
    - Formatierung sollte im Bild wiedergegeben werden (z.B. Farbe, Fett, Kursiv)
    - Höhe des Bildes sollte sich aus den Zeilen des Strings ergeben
    - Zeilenumbrüche sollten auch als solche im Bild durch eine neue Zeile dargestellt werden
    <?php
    $text = '<html>
    
    <head>
    <title>Guten Morgen</title>
    </head>
    
    <body>
    
    <p>&quot;Guten <b>Morgen</b>&quot; <font color="#FF0000">Liebe</font> W<i>elt</i></p>
    
    </body>
    
    </html>';
    $pfad = $_SERVER['PHP_SELF'];
    $x = 500;									// Breite
    $y = 300;									// Höhe
    $font = 5;									// Schriftgröße
    $png = imageCreateTrueColor($x, $y);
    $textfarbe = imageColorAllocate($png, 0, 0, 0); 		// Textfarbe 
    imagealphablending($png, true);
    imagefilledrectangle($png, $x, $y, 0, 0, imagecolorallocate($png, 255, 255, 255));
    $breite = imageFontWidth($font) * strlen($text);		// Breite des Strings bestimmen
    $hoehe = imageFontHeight($font);					// Höhe des Fonts bestimmen
    $x = ($x - $breite) / 2; 						// x-Koordinate berechnen
    $y = ($y - $hoehe) / 2;							// y-Koordinate berechnen
    imageString($png, $font, $x, $y, $text, $textfarbe);		// Text zentriert in Grafik schreiben
    // Grafik im Browser ausgeben
    imagePng($png);
    imageDestroy($png);
    echo '<br /><img src="'.$pfad.'" width="500 height="300" />';
    ?>

    Ich hoffe ihr könnt mir bei der Umsetzung etwas Helfen oder mir wenigstens Links geben damit ich etwas Lesen kann =)
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage


  3. Ich hoffe ihr könnt mir bei der Umsetzung etwas Helfen oder mir wenigstens Links geben damit ich etwas Lesen kann =)


    Ein Gedankenfehler von Dir ist das Du den html-code zusammen mit dem Bild initiierst.
    Du musst aber mit 2 Dateien Arbeiten:
    1) dasbild.php
    2)derhtmlcodemitverweisaufdasbild.html (oder .php)

    kopiere Dir einfach mal dieses Beispiel hier
    in eine php-Datei & lade es hoch, dann dürfte es Dir klar sein.
  4. Wie ich das sehe, möchtest du eine Renderengine für HTML schreiben. Auch ich habe mir bereits Gedanken darüber gemacht, die Idee aber wieder verworfen.

    Zu deinem Formatierungs-Problem: Erstmal muss natürlich alles vor <body> aus dem String entfernt werden. Die Header-Informationen sind da ja nicht soc wichtig, so lange du kein CSS da mit rein bringen willst. Danach wüde ich einen zusätzlichen String machen, in dem praktisch nur die Roh-Daten stehen, wo also alle HTML-Entitäten entfernt werden. Den String kann man dann getrost zu einem mehrdimensionalen Array umwandeln, á la
    $text[] = array(
    	'char' => $zeichen,
    	'weight' => 'bold',
    	'color' => '#FF0000',
    	'family' => 'italic'
    	); // und so weiter
    , um das mal grob darzustellen. Danach berechnest du die Zielbreite, wodurch sich für dich erschließen, wie viele Zeichen pro Zeile passen. Sowas wie ImageWidth / TextWidth und so weiter. Damit kannst du dann berechnen, welches Zeichen an welche Position muss. Danach instanzierst du nur noch 3 Schriftarten (oder so viele du halt brauchst) und kannst dann gemütlich Zeichen für Zeichen in das bild malen. Probleme bekommst du aber spätestens dann, wenn es um das Seiten-Design geht.

    Dass hier jemand ein fertiges Script schreibt, ist denke ich nicht zu erwarten. Mag allerdings sein, dass ich den Wald vor lauter Bäumen nicht sehe und es eine wesentlich einfachere Methode gibt.
  5. Autor dieses Themas

    siteplayer

    siteplayer hat kostenlosen Webspace.

    @ simuliertes, ich habe dies nur testweise in einer Datei stehen gehabt, mir war schon klar und ist auch gewollt, dass das Bild in einer anderen Datei / Seite geladen werden muss.

    @ nerdinator, nun es war nur ein Test Text gewesen, es sollte später nur der Inhalt zwischen BODY umgewandelt werden. Hatte vergessen den überschüssigen Code zu entfernen.

    Zu deinem Lösungsweg, ich wäre dir dankbar wenn du das für mich noch einmal etwas genauer erläutern kannst, ich blicke noch nicht wirklich wie die Umsetzung aussehen soll.
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!