1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| $text1 = 'Viuere, Gallio frater, omnes beate uolunt, sed ad peruidendum quid sit quod beatam uitam efficiat caligant; adeoque non est facile consequi beatam uitam ut eo quisque ab ea longius recedat quo ad illam concitatius fertur, si uia lapsus est; quae ubi in contrarium ducit, ipsa uelocitas maioris interualli causa fit. Proponendum est itaque primum quid sit quod adpetamus; tunc circumspiciendum qua contendere illo celerrime possimus, intellecturi in ipso itinere, si modo rectum erit, quantum cotidie profligetur quantoque propius ab eo simus ad quod nos cupiditas naturalis inpellit.';
$text2 = 'Quam diu quidem passim uagamur non ducem secuti sed fremitum et clamorem dissonum in diuersa uocantium, conteretur uita inter errores, breuis etiam si dies noctesque bonae menti laboremus. Decernatur itaque et quo tendamus et qua, non sine perito aliquo cui explorata sint ea in quae procedimus, quoniam quidem non eadem hic quae in ceteris peregrinationibus condicio est: in illis comprensus aliquis limes et interrogati incolae non patiuntur errare, at hic tritissima quaeque uia et celeberrima maxime decipit.';
$fontPath = '/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf';
$outputFileName = 'imgtile.png';
$im = imagecreatetruecolor(600, 800);
$linePosition = 300;
$lineColor = imagecolorallocate($im, 0xFF, 0xAA, 0xAA);
imageline($im, $linePosition, 0, $linePosition, 799, $lineColor);
$textColor = imagecolorallocate($im, 0xAA, 0xFF, 0xFF);
$fontSize = 10;
$coef = .75;
$charWidth = ceil($fontSize * $coef);
$lineHeight = 20;
$margin = 25;
$marginTop = 100;
$maxChar = ceil((300 - 2 * $margin) / $charWidth);
$pattern = "~
\s*+ \K
\X{1,$maxChar} (?<! \s )
(?! \S )
~xu";
preg_match_all($pattern, $text1, $m);
foreach($m[0] as $n => $line) {
$box = imagettfbbox($fontSize, 0, $fontPath, $line);
$width = $box[2] - $box[0];
$x = $linePosition - $margin - $width;
$y = $marginTop + $n * $lineHeight;
imagettftext($im, $fontSize, 0, $x, $y, $textColor, $fontPath, $line);
}
preg_match_all($pattern, $text2, $m);
foreach($m[0] as $n => $line) {
$x = $linePosition + $margin;
$y = $marginTop + $n * $lineHeight;
imagettftext($im, $fontSize, 0, $x, $y, $textColor, $fontPath, $line);
}
imagepng($im, $outputFileName, 9); |
Partager