Edit report at https://bugs.php.net/bug.php?id=63814&edit=1
ID: 63814
User updated by: webmaster at fxtop dot com
Reported by: webmaster at fxtop dot com
Summary: angles parameters in imagefilledarc are integers,
they should be float
Status: Wont fix
Type: Feature/Change Request
Package: GD related
Operating System: Windows
PHP Version: 5.4.9
Block user comment: N
Private report: N
New Comment:
Hello, thanks for your investigation.
I don't blame that coordinates in pixel are integers, that's normal.
The problem is that angles are integers, which is an undue limitation : angles
are rounded to nearest degree. In astronomy, they deal with seconds of arc,
which is 1/3600 of a degree.
If problem is inside an external library, it should be reported to that library.
What is the proper website to report such limitation ?
Regards
Previous Comments:
------------------------------------------------------------------------
[2012-12-28 10:57:57] [email protected]
That's right, gd takes only integers for coordinates as they're literally
pixels. See here for arcs
http://lxr.php.net/xref/PHP_5_4/ext/gd/libgd/gd.h#546
If you work with float data, you probably will need to do conversion from/to
int.
------------------------------------------------------------------------
[2012-12-20 15:24:21] [email protected]
the gd extension is mostly a wrapper for gd library.
As gd library doesn't accept float values for this comment, I think this is not
possible.
------------------------------------------------------------------------
[2012-12-20 12:32:55] webmaster at fxtop dot com
Description:
------------
see sample result at
http://mon-convertisseur.fr/php/imgangle.php?DEGRE=172.3
angles are truncated to nearest integer, in imagefilledarc function, they
shouldn't
you can change parameter if you like
---
>From manual page:
>http://www.php.net/function.imagefilledarc#refsect1-function.imagefilledarc-description
---
Test script:
---------------
header("Content-type: image/jpeg");
if (isset($_GET["DEGRE"])){ $lDegre=$_GET["DEGRE"];}
$lSizeX=916;
$lSizeY=945;
$image = imagecreatetruecolor($lSizeX, $lSizeY);
$colorGreen = imagecolorallocate($image, 0, 255, 0);
// background coming from
http://commons.wikimedia.org/wiki/File:Protractor_katomierz.jpg with some
little changes
$fond=imagecreatefromjpeg("Protractor_katomierz_tourne05b.jpg");
//HERE I ROUND DEGRE PARAMETER BECAUSE imagefilledarc only accept integers (I
prefer it rounded than truncated)
$lNumDegre=round($lDegre);
$lResult|=imagefilledarc ($image , 460 , 474 , 2*430 , 2*430 , -$lNumDegre ,
0, $colorGreen , IMG_ARC_PIE );
$lResult|=imagecopymerge($image, $fond, 0, 0, 0 , 0, $lSizeX,$lSizeY,75);
imagejpeg($image, "temp.jpg");
imagedestroy($image);
echo file_get_contents("temp.jpg");
Expected result:
----------------
imagefilledarc should accept float parameters for "start" and "end" parameters.
As you can see on sample at
http://mon-convertisseur.fr/php/imgangle.php?DEGRE=172.3 green backgound
allways fall on a degre graduation of the protactor.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=63814&edit=1