From 39c260fb4a016d51c1a1c47772118b845e6897ec Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Fri, 21 Nov 2014 19:29:54 +0100 Subject: [PATCH] fixed bug: GD circle method does not respect border thickness --- src/Intervention/Image/Gd/Shapes/EllipseShape.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Intervention/Image/Gd/Shapes/EllipseShape.php b/src/Intervention/Image/Gd/Shapes/EllipseShape.php index 23e3dfef..f5c8b531 100644 --- a/src/Intervention/Image/Gd/Shapes/EllipseShape.php +++ b/src/Intervention/Image/Gd/Shapes/EllipseShape.php @@ -43,13 +43,20 @@ class EllipseShape extends \Intervention\Image\AbstractShape */ public function applyToImage(Image $image, $x = 0, $y = 0) { + // parse background color $background = new Color($this->background); - imagefilledellipse($image->getCore(), $x, $y, $this->width, $this->height, $background->getInt()); if ($this->hasBorder()) { + // slightly smaller ellipse to keep 1px bordered edges clean + imagefilledellipse($image->getCore(), $x, $y, $this->width-1, $this->height-1, $background->getInt()); + $border_color = new Color($this->border_color); imagesetthickness($image->getCore(), $this->border_width); - imageellipse($image->getCore(), $x, $y, $this->width, $this->height, $border_color->getInt()); + + // gd's imageellipse doesn't respect imagesetthickness so i use imagearc with 359.9 degrees here + imagearc($image->getCore(), $x, $y, $this->width, $this->height, 0, 359.99, $border_color->getInt()); + } else { + imagefilledellipse($image->getCore(), $x, $y, $this->width, $this->height, $background->getInt()); } return true;