GD and Image 函数
在线手册:中文 英文
PHP手册

imageellipse

(PHP 4 >= 4.0.6, PHP 5)

imageellipse画一个椭圆

说明

bool imageellipse ( resource $image , int $cx , int $cy , int $w , int $h , int $color )

imageellipse()image 所代表的图像中画一个中心为 cxcy(图像左上角为 0, 0)的椭圆。wh 分别指定了椭圆的宽度和高度,椭圆的颜色由 color 指定。

Note:

本函数需要 GD 2.0.2 或更高版本。

Example #1 imageellipse() 例子

<?php

// 新建一个空白图像
$image imagecreatetruecolor(400300);

// 填充背景色
$bg imagecolorallocate($image000);

// 选择椭圆的颜色
$col_ellipse imagecolorallocate($image255255255);

// 画一个椭圆
imageellipse($image200150300200$col_ellipse);

// 输出图像
header("Content-type: image/png");
imagepng($image);

?>

参见 imagefilledellipse()imagearc()

参数

image

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

cx

x-coordinate of the center.

cy

y-coordinate of the center.

width

The ellipse width.

height

The ellipse height.

color

The color of the ellipse. A color identifier created with imagecolorallocate().

返回值

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

范例

Example #2 imageellipse() example

<?php

// Create a blank image.
$image imagecreatetruecolor(400300);

// Select the background color.
$bg imagecolorallocate($image000);

// Fill the background with the color selected above.
imagefill($image00$bg);

// Choose a color for the ellipse.
$col_ellipse imagecolorallocate($image255255255);

// Draw the ellipse.
imageellipse($image200150300200$col_ellipse);

// Output the image.
header("Content-type: image/png");
imagepng($image);

?>

以上例程的输出类似于:

Output of example : imageellipse()

注释

Note:

This function requires GD 2.0.2 or later.

参见


GD and Image 函数
在线手册:中文 英文
PHP手册
PHP手册 - N: 画一个椭圆

用户评论:

themountainlion at gmail dot com (13-Jul-2008 05:28)

In example #1 above, the variable $bg is set but not used. Set the background to anything but black ,and it won't take effect. The example needs

imagefill($image, 0, 0, $bg);

Some other image function examples have the same issue.

simon_nuttall at hotmail dot com (07-Jun-2006 09:36)

This is an optimised and bug fixed version of nojer at yahoo dot com's rotatedellipse function. I've changed it so that the arguments are compatible with imageellipse. See notes on imagearc for original version.

<?php

function rotatedellipse($im, $cx, $cy, $width, $height, $rotateangle, $colour, $filled=false) {
 
// modified here from nojer's version
  // Rotates from the three o-clock position clockwise with increasing angle.
  // Arguments are compatible with imageellipse.

 
$width=$width/2;
 
$height=$height/2;

 
// This affects how coarse the ellipse is drawn.
 
$step=3;

 
$cosangle=cos(deg2rad($rotateangle));
 
$sinangle=sin(deg2rad($rotateangle));

 
// $px and $py are initialised to values corresponding to $angle=0.
 
$px=$width * $cosangle;
 
$py=$width * $sinangle;
 
  for (
$angle=$step; $angle<=(180+$step); $angle+=$step) {
   
   
$ox = $width * cos(deg2rad($angle));
   
$oy = $height * sin(deg2rad($angle));
   
   
$x = ($ox * $cosangle) - ($oy * $sinangle);
   
$y = ($ox * $sinangle) + ($oy * $cosangle);
 
    if (
$filled) {
     
triangle($im, $cx, $cy, $cx+$px, $cy+$py, $cx+$x, $cy+$y, $colour);
     
triangle($im, $cx, $cy, $cx-$px, $cy-$py, $cx-$x, $cy-$y, $colour);
    } else {
     
imageline($im, $cx+$px, $cy+$py, $cx+$x, $cy+$y, $colour);
     
imageline($im, $cx-$px, $cy-$py, $cx-$x, $cy-$y, $colour);
    }
   
$px=$x;
   
$py=$y;
  }
}

function
triangle($im, $x1,$y1, $x2,$y2, $x3,$y3, $colour) {
  
$coords = array($x1,$y1, $x2,$y2, $x3,$y3);
  
imagefilledpolygon($im, $coords, 3, $colour);
}

?>

julian (16-Jan-2005 02:23)

if you want to display an ellipse in the upper left corner of an image, you can easily calculate the corresponding cx and cy values. this example will draw an ellipse having the same width and height as the image.

<?php

$ellipse_width
= 100;
$ellipse_height = 200;

$ellipse_cx = ($ellipse_width / 2);
$ellipse_cy = ($ellipse_height / 2);

$img_x = $ellipse_width;
$img_y = $ellipse_height;

$img = imagecreate($img_x, $img_y);
$bg = imagecolorallocate($img, 255,255,255);

$ellipse_color = imagecolorallocate($img, 0, 0, 0);

imageellipse($img, $ellipse_cx, $ellipse_cy, $ellipse_width, $ellipse_height, $ellipse_color);

header("Content-type: image/png");
imagepng($img);
imagedestroy($img);

?>

agentyoungsoo at hanmail dot net (05-Dec-2002 04:56)

When you wana use "ImageEllipse" function
in under GD 2.0.2 version, you can use "ImageArc" like bellow

----------------------------------------------------
$file_name = "test.png";

$screen_x = 300;
$screen_y = 200;

$x1 = $screen_x / 2;
$y1 = $screen_y / 2;

$radius = 30;

$image = ImageCreate($screen_x, $screen_y);
$black = ImageColorAllocate($image, 0,0,0);

ImageArc($image, $x1, $y1, $radius , $radius , 0, 360, $black);

ImagePng($image, $file_name);
ImageDestroy($image);
----------------------------------------------------