For everyone who will use imageellipse() with a border (imagesetthickness() not working correctly).
This function simualtes the standard gd border.
<?php
function imageEllipseWithBorder($image, $centerX, $centerY, $width, $height, $color, $borderWidth)
{
$borderOuterStrength = (($borderWidth - 1) / 2);
$borderInnerStrength = ((($borderWidth - 1) / 2) + 1);
$ellipseXOffset = $centerX - ($width / 2) - $borderOuterStrength;
$ellipseYOffset = $centerY - ($height / 2) - $borderOuterStrength;
$tempImageWidth = $width + ($borderOuterStrength * 2) + 1;
$tempImageHeight = $height + ($borderInnerStrength * 2) + 1;
$tempImage = imagecreatetruecolor($tempImageWidth, $tempImageHeight);
imagealphablending($tempImage, false);
$transparent = imagecolorallocatealpha($tempImage, 255, 255, 255, 127);
imagefill($tempImage, 0, 0, $transparent);
imagefilledellipse(
$tempImage,
$centerX - $ellipseXOffset,
$centerY - $ellipseYOffset,
$width + $borderOuterStrength * 2,
$height + $borderOuterStrength * 2,
$color
);
imagefilledellipse(
$tempImage,
$centerX - $ellipseXOffset,
$centerY - $ellipseYOffset,
$width - $borderInnerStrength * 2,
$height - $borderInnerStrength * 2,
$transparent
);
imagealphablending($image, true);
imagecopy(
$image,
$tempImage,
$ellipseXOffset + ($borderWidth + 1) % 2,
$ellipseYOffset + ($borderWidth + 1) % 2,
0,
0,
$tempImageWidth,
$tempImageHeight
);
}
?>