• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • imageopenpolygon()

    (PHP 7 >= 7.2.0)

    Draws an open polygon

    说明

    imageopenpolygon(resource $image,array $points,int $num_points,int $color): bool

    imageopenpolygon() draws an open polygon on the given$image. Contrary to imagepolygon(), no line is drawn between the last and the first point.

    参数

    $image

    由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

    $points

    An array containing the polygon's vertices, e.g.:

    points[0]= x0
    points[1]= y0
    points[2]= x1
    points[3]= y1
    $num_points

    Total number of points(vertices), which must be at least 3.

    $color

    A color identifier created with imagecolorallocate().

    返回值

    成功时返回TRUE,或者在失败时返回FALSE

    范例

    imageopenpolygon() example

    <?php
    // Create a blank image
    $image = imagecreatetruecolor(400, 300);
    // Allocate a color for the polygon
    $col_poly = imagecolorallocate($image, 255, 255, 255);
    // Draw the polygon
    imageopenpolygon($image, array(
            0,   0,
            100, 200,
            300, 200
        ),
        3,
        $col_poly);
    // Output the picture to the browser
    header('Content-type: image/png');
    imagepng($image);
    imagedestroy($image);
    ?>
    

    以上例程的输出类似于:

    参见

    In case you want to use an open polygon but are stuck with a PHP version prior to 7.2, a solution may be to 'backplot' your array to its original start. Say you have an array of pixels (below seperated by commas)
    <?php
    $arr = array();
    for ($i = 0; $i < count($pixels); $i++) {
      $pixel = explode(',', $pixels[$i]);
      if (($pixel[0] > 0) && ($pixel[1] > 0)) {
        $arr[] = $pixel[0];
        $arr[] = $pixel[1];
      }
    }
    imagepolygon($im, $arr, (count($arr) / 2), $otcolor);
    ?>
    you can replace this by something like
    <?php
    $arr = array();
    for ($i = 0; $i < count($pixels); $i++) {
      $pixel = explode(',', $pixels[$i]);
      $arr[] = $pixel[0];
      $arr[] = $pixel[1];
    }
    // imageopenpolygon($im, $arr, (count($arr) / 2), $otcolor) is not possible, so...
    for ($i = (count($pixels)-1); $i >= 0; $i--) {
      $pixel = explode(',', $pixels[$i]);
      $arr[] = $pixel[0];
      $arr[] = $pixel[1];
    }
    imagepolygon($im, $arr, (count($arr) / 2), $otcolor);
    ?>