Autor | Zpráva | ||
---|---|---|---|
hunter_dave Profil |
#1 · Zasláno: 23. 7. 2011, 09:22:44
Zdravím mám problém s textem v obrázku. Potřebuju mít obrázek přesně podle textu.
Zatím mám tento kód, ale problém je, že každé písmeno je jinak široké takže je mi to na nic. $text="test"; $length=strlen($text); $total_length=$length*5.22; $img = imagecreatetruecolor($total_length, 15); ?> Zajímalo by mě jestli by se obrázek mohl odříznout na koci textu. |
||
Chro Profil |
#2 · Zasláno: 23. 7. 2011, 15:16:48
Funkce imagettfbbox vrací pole s osmi souřadnicemi (4 body, souřadnice X, Y) - boxu, který font (např. arial.ttf) s požadovaným textem zabere v pixelech.
|
||
Chro Profil |
#3 · Zasláno: 23. 7. 2011, 17:20:11
Protože mě tento problém zaujal, popral jsem se s ním, a přináším možné řešení:
<?php $text = 'I love PHP'; $font_cesta = 'arial.ttf'; $font_velikost = 20; $prostor_kolem_textu = 10; $box = imagettfbbox($font_velikost, 0, $font_cesta, $text); $dolni_levy_x = $box[0]; $dolni_levy_y = $box[1]; $dolni_pravy_x = $box[2]; $dolni_pravy_y = $box[3]; $horni_pravy_x = $box[4]; $horni_pravy_y = $box[5]; $horni_levy_x = $box[6]; $horni_levy_y = $box[7]; $sirka = $horni_pravy_x - $horni_levy_x; $vyska = $dolni_levy_y - $horni_levy_y; $obrazek = imagecreatetruecolor($sirka + ($prostor_kolem_textu * 2), $vyska + ($prostor_kolem_textu * 2)); $barva = imagecolorallocate($obrazek, 130, 130, 130); $odsazeni_x = $prostor_kolem_textu; $odsazeni_y = $vyska + $prostor_kolem_textu; imagettftext($obrazek, $font_velikost, 0, $odsazeni_x, $odsazeni_y, $barva, $font_cesta, $text); header('Content-type: image/png'); imagepng($obrazek, NULL, 9); imagedestroy($obrazek); ?> |
||
hunter_dave Profil |
#4 · Zasláno: 23. 7. 2011, 18:58:50
Chro:
Díky to jsem potřeboval .. jinak ten text potřebuju mít těsně u okraje .. takže využiju jenom tu fci .. jde o to že když někdo na stránce zadá email do kontaktů .. bude se zoobrazovat obrázek s emailem a ne email .. kvuli spamovacím robotům. |
||
Časová prodleva: 13 let
|
0