Ik wil dus een script maken in PHP, die automatisch text op een plaatje zet. Nou, opzich is dat niet moeilijk, met IMAGETTFTEXT lukt het al aardig, alleen is er wel een probleem; ik wil ook dat als de text te lang is, dat het wordt afgeproken (op heel woord) en dat het op de volgende regel wordt geprint.
Ik heb 'ooit' een script gemaakt, maar die werkte niet 100%, ik heb weer ff naar gekeken, maar zie ook geen four direct.
Op een of andere manier komt het af en toe voor dat het toch buiten de rand komt. Wel vreemd ik heb zelf een marge van 10px.
Misschien weet iemand een functie of een lib die het al netjes doet? Of een andere manier?
Ik heb 'ooit' een script gemaakt, maar die werkte niet 100%, ik heb weer ff naar gekeken, maar zie ook geen four direct.
Op een of andere manier komt het af en toe voor dat het toch buiten de rand komt. Wel vreemd ik heb zelf een marge van 10px.
Misschien weet iemand een functie of een lib die het al netjes doet? Of een andere manier?
PHP:
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
54
55
56
57
58
59
60
61
62
63
| $string = "weqrweqr ertwert wert erw twer twer twet ". "ewr twlerjlkj leeeekj lkjlkjkjlk kljkjklj klklj ". "lkjkjlkj kljk;lj kj;kj seeeedfsfsdkj"; $fontfile = "verdana.ttf"; $fontsize = 10; $fontMetrix_space = getStringWidth(" ", $fontfile, $fontsize); $img_src = imagecreatefromjpeg("matrix.jpg"); $img_src_x = imagesx($img_src); $img_src_y = imagesy($img_src); $string = explode(" ", $string); $output = array(); $row_border = 10; $row_w = 0; $row_count = 0; $output[$row_count] = ""; $row_max_w = $img_src_x - $row_border * 2; while($s = array_shift($string)) { $str_w = getStringWidth($s, $fontfile, $fontsize); if($row_w + $str_w + $fontMetrix_space< $row_max_w) { $output[$row_count] .= $s . " "; $row_w += $str_w + $fontMetrix_space; } else { $row_count++; $output[$row_count] = $s . " "; $row_w = $str_w + $fontMetrix_space; } } $img_dst = imagecreatetruecolor($img_src_x, $img_src_y + ($row_count + 2) * $fontsize + 5); imagecopy($img_dst, $img_src,0,0, 0,0,$img_src_x, $img_src_y); $white = imagecolorallocate($img_dst, 255,255,255); $i=0; while($txt = array_shift($output)) { imagettftext($img_dst, $fontsize, 0, $row_border, $img_src_y + $fontsize + 3 + $i * ($fontsize + 3), $white, $fontfile, $txt); $i++; } header("Content-type: image/jpeg"); imagejpeg($img_dst); function getStringWidth($string, $fontfile, $fontsize) { $r = imagettfbbox($fontsize, 0, $fontfile, $string); return $r[4]; } |
[ Voor 5% gewijzigd door ddofborg op 20-05-2003 23:28 ]