©
本文档使用
php.cn手册 发布
(PHP 4 >= 4.0.6, PHP 5, PHP 7)
imageellipse — 画一个椭圆
$image
, int $cx
, int $cy
, int $width
, int $height
, int $color
)在指定的坐标上画一个椭圆。
image
由图象创建函数(例如 imagecreatetruecolor() )返回的图象资源。
cx
中间的 X 坐标。
cy
中间的 Y 坐标。
width
椭圆的宽度。
height
椭圆的高度。
color
椭圆的颜色。颜色标识符由 imagecolorallocate() 创建。
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
Example #1 imageellipse() 例子
<?php
// 新建一个空白图像
$image = imagecreatetruecolor ( 400 , 300 );
// 填充背景色
$bg = imagecolorallocate ( $image , 0 , 0 , 0 );
// 选择椭圆的颜色
$col_ellipse = imagecolorallocate ( $image , 255 , 255 , 255 );
// 画一个椭圆
imageellipse ( $image , 200 , 150 , 300 , 200 , $col_ellipse );
// 输出图像
header ( "Content-type: image/png" );
imagepng ( $image );
?>
以上例程的输出类似于:
Note:
本函数需要 GD 2.0.2 或更高版本。
[#1] themountainlion at gmail dot com [2008-07-13 09:28:00]
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.
[#2] simon_nuttall at hotmail dot com [2006-06-07 13:36:59]
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);
}
?>
[#3] julian [2005-01-16 06:23:40]
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);
?>
[#4] agentyoungsoo at hanmail dot net [2002-12-04 20:56:28]
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);
----------------------------------------------------