관리-도구
편집 파일: PolygonShape.php
<?php namespace Intervention\Image\Imagick\Shapes; use Intervention\Image\AbstractShape; use Intervention\Image\Image; use Intervention\Image\Imagick\Color; class PolygonShape extends AbstractShape { /** * Array of points of polygon * * @var array */ public $points; /** * Create new polygon instance * * @param array $points */ public function __construct($points) { $this->points = $this->formatPoints($points); } /** * Draw polygon on given image * * @param Image $image * @param int $x * @param int $y * @return boolean */ public function applyToImage(Image $image, $x = 0, $y = 0) { $polygon = new \ImagickDraw; // set background $bgcolor = new Color($this->background); $polygon->setFillColor($bgcolor->getPixel()); // set border if ($this->hasBorder()) { $border_color = new Color($this->border_color); $polygon->setStrokeWidth($this->border_width); $polygon->setStrokeColor($border_color->getPixel()); } $polygon->polygon($this->points); $image->getCore()->drawImage($polygon); return true; } /** * Format polygon points to Imagick format * * @param Array $points * @return Array */ private function formatPoints($points) { $ipoints = []; $count = 1; foreach ($points as $key => $value) { if ($count%2 === 0) { $y = $value; $ipoints[] = ['x' => $x, 'y' => $y]; } else { $x = $value; } $count++; } return $ipoints; } }