Dynamiska bilder

Jag tänkte att jag skulle ha en tagline (under huvudrubriken stojg.net ovanför) som ändrar sig mellan sidladdningarna. Jag ville dessutom ha ett något annorlunda teckensnitt än de standarder som finns och att texten skulle vara skuggad.

Lösning är en php-genererad bild som hämtar taglinen från en textfil och använder en truetypefont för att skriva ut den två gånger, först skuggan, och sen den riktiga texten på den. Resultatet blir en text som är lite snyggare, ändrar sig och alla som surfar med bilder påslagna kan se den.

Den php-fil som nedanstÃ¥ende kod ligger i anropar jag som en vanligt med <img src=”tagline.php” alt=”slumpvis tagline” />-tagg i min vanliga html sida.
[php]$tagfile=’taglines.txt’;
$font = ‘kartika.ttf’;
$font_size=18;
$adjustment = 7;
$angle = 0;

if (!$lines=file($tagfile)) { $message = ‘No tagfile found!’; }
else {
list($micro_sec, $sec) = explode(‘ ‘, microtime());
srand((float)$sec + ((float)$micro_sec * 100000));
$message = $lines[rand(0,count($lines)-1)];
}

$txt_bounding_box = imagettfbbox ($font_size, $angle, $font, $message);

$width=abs($txt_bounding_box[4]-$txt_bounding_box[0]+1);
$height=abs($txt_bounding_box[1]-$txt_bounding_box[5]+1);

$img = imagecreate($width,$height);

$background_color = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);
$color_text = imagecolorallocate($img, 0x0, 0x0, 0x0);
$color_shadow = imagecolorallocate($img, 0xA0, 0xA0, 0xA0);

imagecolortransparent($img,$background_color);

$txt_baseline_x = 0;
$txt_baseline_y = $font_size-$adjustment;
imagettftext($img, $font_size, $angle, $txt_baseline_x+1,
$txt_baseline_y+1, $color_shadow, $font, $message);
imagettftext($img, $font_size, $angle, $txt_baseline_x,
$txt_baseline_y, $color_text, $font, $message);

header(”content-type:image/png”);
imagepng($img);
imagedestroy($img);
[/php]

2 thoughts on “Dynamiska bilder

  1. fan va soft…men gÃ¥r det inte att göra sÃ¥ med en textsträng istället? Tänkte pÃ¥ de som av ngn aledning inte har bild pÃ¥, eller av nedladdningstidsanledning (skumt ord det där…)

    jag skulle vilja kunna mer om php än ”hello world” liksom 😉

    fet site btw

  2. Jodå, det är bra mycket enklare. det ser helt enkelt ut så här:

    [php]$tagfile=\’taglines.txt\’;

    if (!$lines=file($tagfile)) { echo \’No tagfile found!\’; }
    else {
    list($micro_sec, $sec) = explode(\’ \’, microtime());
    srand((float)$sec + ((float)$micro_sec * 100000));
    echo = $lines[rand(0,count($lines)-1)];
    }[/php]

    Men då får man lägga in den här koden direkt där man vill att texten ska visas, inom php-fnuttarna förstås.

    Bilden i scriptet blir ju inte så stor kring 1 kb, det som kan ställa till det är om den surfar in har slagit av bildvisningen, men såna människor får skylla sig själv om de inte vill se den eminenta taglinen.

    Tack, den är rätt ospännande site tycker jag, men man mÃ¥ste fan ha en site idag om man ska räknas som ngt 😀

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *