Obracający się napis – podrasowana wersja skryptu

Pamiętacie mój wpis na temat generowania animowanych GIF-ów w PHP?

Witam na moim blogu!Postanowiłem nieco ulepszyć zaprezentowany tam przeze mnie kod. Teraz skrypt nie animuje tekstu wpisanego „na sztywno”, lecz ten podesłany metodą POST, czyli np. formularzem HTML. Dodatkowo wymiary GIF-a każdorazowo dostosowują się do szerokości samego napisu, dzięki czemu obrazek nigdy nie jest za duży ani za mały, w stosunku do wypisanego na nim tekstu.

Oto pełny kod źródłowy skryptu. Bierzcie i jedzcie z tego wszyscy 🙂

<?php
# A script generating animated GIF
# with 360 degrees rotating text.
# Created at: 2017-03-05
# by Homar IT, www.homar-it.obywateleuropy.eu

// Config
define ('TEXT', $_POST['text']);
define ('TEXT_SIZE', 40);
define ('TEXT_FONT', '../Bromine.ttf');
define ('TEXT_ANGLE', 330);
define ('WIDTH', imageTTFBbox(TEXT_SIZE, 0, TEXT_FONT, TEXT)[4]);
define ('HEIGHT', WIDTH);

// Generate animation frames
$frames = array();
$delays = array();
for ($i = 0; $i < 360; $i++) {

     // Create new frame
     $frame = imagecreatetruecolor(WIDTH, HEIGHT);

     // Calculate angle
     $angle = TEXT_ANGLE + $i;

     // Calculate text center coordinates
     $box = @imageTTFBbox(TEXT_SIZE, $angle, TEXT_FONT, TEXT);
     $x   = ceil((WIDTH  - $box[4]) / 2);
     $y   = ceil((HEIGHT - $box[5]) / 2);

     // Write the text
     imagettftext ($frame, TEXT_SIZE, $angle, $x, $y, imagecolorallocate($frame, 255, 255, 255), TEXT_FONT, TEXT);

     // Render our frame and keep it in $frames
     ob_start();
     imagegif ($frame);
     $frames[] = ob_get_clean();
     $delays[] = 10;
}

// Display the result
require_once '../GIFEncoder.class.php';
$gif = new AnimatedGif($frames, $delays, 0);
$gif->display();

A tu kod prostego formularza HTML, dla osób chcących szybko przetestować skrypt:

<form method="post">
    Napis: <input name="text" type="text">
    <input type="submit" value="Utwórz GIF-a!">
</form>

Mam nadzieję, że komuś z Was się to przyda. Dajcie znać w komentarzach! 🙂

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s