Autor Zpráva
Textař
Profil *
Zdravím,

nemůžu přijít na to jak vyřešit následující problém:

Udělal sem si obrázek pomocí imagecreatetruekolor o šířce 200px a pak do něj pomocí imagettftext vepsal nějaký text... jak mám udělat aby tento text byl v obrázku vycentrován na střed, když předem nevím kolik písmen bude text obsahovat (vím že bude mít 14px velikost nastavenou v té funkci imagettftext)

díky za všechny rady
blizz_boz
Profil
no trochu som sa nudil tak som ti napísal triedu ktorá vypíše na obrázok vycentrovaný text:

class CentredText
{
	private $image;
	private $size;
	private $color;
	private $font;
	public function __construct($image)
	{
		$this->image = $image;
		$this->color = ImageColorAllocate($image, 0, 0, 0);
	}
	public function setFont($font)
	{
		$this->font = $font;
	}
	public function setColor($color)
	{
		$this->color = $color;
	}
	public function setSize($size)
	{
		$this->size = $size;
	}
	protected function calculatePosition($imageSize, $textSize)
	{
		return round(($imageSize - $textSize) / 2);
	}
	public function show($text)
	{
		if (!is_string($text))
			throw new Exception('Typ argumentu musí byť string');
		$textSize = ImageTTFBBox($this->size, 0, $this->font, $text);
		$xPosition = $this->calculatePosition(imagesx($this->image), $textSize[2] - $textSize[0]);
		$yPosition = $this->calculatePosition(imagesy($this->image), $textSize[7] - $textSize[1]);
		ImageTTFText($this->image, $this->size, 0, $xPosition, $yPosition, $this->color, $this->font, $text);
	}
}


a takto sa používa:

$centredText = new CentredText($image);
$centredText->setFont('fonts/CMUTypewriter-Regular.ttf');
$centredText->setSize(16);
$centredText->show('Vycentrovaný text.');

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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