/** * Обрезает изображение * @param Boundary $s Границы области обрезки * @throws GDException * @return GDImage */ function crop(Boundary $s) { if (($r = @imagecreatetruecolor($s->width(), $s->height())) === FALSE) { throw new GDException('Невозможно инициализировать GD поток'); } @imagealphablending($r, false); if (!@imagecopy($r, $this->handle, 0, 0, $s->left(), $s->top(), $s->width(), $s->height())) { @imagedestroy($r); throw new GDException("Не удалось растянуть изображение."); } @imagealphablending($r, true); @imagedestroy($this->handle); $this->handle = $r; return $this; }
function drawTitle($image, Boundary $b) { $s = $this->title['font']->getTextExtent($this->title['text']); //var_dump(imagettfbbox($this->title['font']->size,$this->title['font']->angle,$this->title['font']->family,$this->title['text'])); //throw new exception ($s->height); if ($s->height > $b->height() || $s->width > $b->width()) { throw new ChartException("Недостаточно места для вывода заголовка."); } $b->bottom($b->top() + $s->height); $title = new Label($b, $this->title['text'], $this->title['font'], $this->title['color'], Label::ALIGN_CENTER_TOP); $title->draw($image); }