Skip to content

InteractivePHP

InteractivePHP ist ein kleines Experiment mit PHP, GD & Javascript.

Dabei habe ich versucht mit PHP & GD animierte Bilder zu erstellen. Das Generieren von animierten GIFs mit GD ist kompliziert und langsam. Das Generieren eines einzelnen Frames ist dagegen denkbar einfach. InteractivePHP besteht aus zwei Komponenten:

  1. Dem Bild, das mit PHP & GD immer dynamisch generiert wird. Per GET wird dem Bild-Script die aktuelle Position der Animation mitgeteilt.
  2. Der Oberfläche, die mit HTML und Javascript das animierte Bild anzeigt und mit einem Timer das Bild alle par Millisekunden neu lädt.

In der Oberfläche habe ich einige Slider implementiert. Mit diesen kann man den Text drehen und verschieben.

Den Code gibt es hier auf Codeberg: /stv0g/snippets/interactive_php

Screenshot of InteractivePHP
Screenshot of InteractivePHP.

Das Script ist bisher nur mit dem Firefox getestet worden. Sollte keine Anmiation zusehen sein, kann es helfen die den Regler “Animtions-Speed” zu nach rechts zu schieben. Je nach Internetverbindung sollte dann eine einigermaßen flüssige Animation zu sehen sein.

Sicherlich ist diese Technik nicht alltagstauglich. Die Serverbelastung bei mehreren Usern wäre einfach zu hoch. Für einen Ajax-Chat der die Nachrichtenfenster mit Smilies als Grafik darstellt, wäre diese Technik aber anwendbar, da jeder User die gleichen Bilder sehen würde. Ein Caching-Mechanismus könnte dieses Problem beheben.

Hier ist der PHP-Code der im Backend das Bild generiert:

<?php
header('Content-Type: image/png');
putenv('GDFONTPATH=' . realpath('.'));
$img = imagecreate((int) 4 * $_GET['imgsize'], (int) 3 * $_GET['imgsize']);
$bg_col = imagecolorallocate($img, 255, 255, 255 );
$text_col = imagecolorallocate($img, 0, 0, 0);
imagettftext($img, (int) $_GET['fontsize'], (int) $_GET['angle'], (int) $_GET['x'], (int) $_GET['y'], $text_col, (int) $_GET['font'] . '.ttf', $_GET['text']);
imagepng($img);
imagedestroy($img);
?>