Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: GD Libraryn tekstistä

Tumca [21.12.2007 14:41:31]

#

Hei!

Minulla on seuraavanlainen koodipätkä:

<?php
$im     = imagecreatefrompng("testi.png");
$teksti_co=imagecolorallocate($im, 0, 0 ,0);
$teksti = "kirjoitus joka tulee kuvaan. Ja jatkuu, jatkuu, jatkuu...";
imagestring ( $im,6, 85,50, "$teksti", $teksti_co );
imagepng($im, "valmis.png");
imagedestroy($im);
?>

Kuinka olisi mahdollista määrittää tekstille leveysraja, jonka jälkeen alkaisi uusi rivi heti tekstin alle?

Antti Laaksonen [21.12.2007 15:02:02]

#

Korvaa pelkkä imagestring-kutsu tällä:

$leveys = 80; // sallittu leveys pikseleinä
$rivilla = intval($leveys / imagefontwidth(5));
$korkeus = imagefontheight(5);
$kohta = 50; // aloituskohdan y-koordinaatti
for ($i = 0; $i < strlen($teksti); $i += $rivilla) {
    $osa = substr($teksti, $i, $rivilla);
    imagestring ($im, 5, 85, $kohta, $osa, $teksti_co);
    $kohta += $korkeus;
}

Ideana on tutkia ensin, kuinka monta merkkiä rivillä saa olla, jotta rivi ei ole liian pitkä. Tämän jälkeen erotetaan merkkijonosta yksi kerrallaan rivit ja tulostetaan ne oikeisiin paikkoihin. Fontin koko (yllä 5) tulee kolmen eri funktion kutsuun (imagefontwidth, imagefontheight, imagestring).

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta