| 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: 14 let
|
|||
0