Autor Zpráva
hunter_dave
Profil
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
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
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
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.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0