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?
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).
Aihe on jo aika vanha, joten et voi enää vastata siihen.