imageellipse

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imageellipse绘制椭圆

描述

imageellipse(
    GdImage $image,
    int $center_x,
    int $center_y,
    int $width,
    int $height,
    int $color
): bool

绘制以指定坐标为中心的椭圆。

参数

image

一个 GdImage 对象,由图像创建函数之一返回,例如 imagecreatetruecolor()

center_x

中心的 x 坐标。

center_y

中心的 y 坐标。

width

椭圆宽度。

height

椭圆高度。

color

椭圆的颜色。使用 imagecolorallocate() 创建的颜色标识符。

返回值

成功时返回 true,失败时返回 false

变更日志

版本 描述
8.0.0 image 现在需要一个 GdImage 实例;以前需要一个有效的 gd resource

示例

示例 #1 imageellipse() 示例

<?php

// 创建一个空白图像。
$image = imagecreatetruecolor(400, 300);

// 选择背景颜色。
$bg = imagecolorallocate($image, 0, 0, 0);

// 用上面选择的颜色填充背景。
imagefill($image, 0, 0, $bg);

// 为椭圆选择颜色。
$col_ellipse = imagecolorallocate($image, 255, 255, 255);

// 绘制椭圆。
imageellipse($image, 200, 150, 300, 200, $col_ellipse);

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

?>

上面的例子会输出类似以下的东西

Output of example : imageellipse()

注释

注意:

imageellipse() 会忽略 imagesetthickness()

参见

添加备注

用户贡献的注释 3 notes

simon_nuttall at hotmail dot com
18 年前
这是 nojer at yahoo dot com 的 rotatedellipse 函数的优化和错误修复版本。我已经更改了它,使其参数与 imageellipse 兼容。有关原始版本的说明,请参见有关 imagearc 的注释。

<?php

function rotatedellipse($im, $cx, $cy, $width, $height, $rotateangle, $colour, $filled=false) {
// 从 nojer 版本修改而来
// 椭圆从 3 点钟位置顺时针旋转,角度递增。
// 参数与 imageellipse 兼容。

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

// 这会影响椭圆绘制的粗糙程度。
$step=3;

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

// $px 和 $py 被初始化为对应于 $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
19 年前
如果你想在图像的左上角显示一个椭圆,你可以轻松地计算出相应的 cx 和 cy 值。这个示例将绘制一个与图像宽度和高度相同的椭圆。

<?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
21 年前
当你想要使用 "ImageEllipse" 函数时
在低于 GD 2.0.2 版本中,你可以使用 "ImageArc" 如下所示

----------------------------------------------------
$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);
----------------------------------------------------
To Top