Autor | Zpráva | ||
---|---|---|---|
Textař Profil * |
#1 · Zasláno: 20. 4. 2009, 01:46:18
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 |
#2 · Zasláno: 20. 4. 2009, 05:30:28 · Upravil/a: blizz_boz
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.'); |
||
Časová prodleva: 15 let
|
0