php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #43204 imageRectangle not draw rectangle with 1x1 pixel size (i.e. square)
Submitted: 2007-11-06 11:04 UTC Modified: 2007-11-13 09:39 UTC
From: andreythinking at gmail dot com Assigned: pajoye (profile)
Status: Not a bug Package: GD related
PHP Version: 5.2.4 OS: Linux Mandrake 10.0 Official
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: andreythinking at gmail dot com
New email:
PHP Version: OS:

 

 [2007-11-06 11:04 UTC] andreythinking at gmail dot com
Description:
------------
Php-5.2.4 draw parallelepiped instead square, when recieves coordinats 0,0,0,0 (1x1 pixel).

On another sizes this fenomen disappears.


* * *

Some system features (results of command rpm -qa | grep gd):

ifplugd-0.21b-1mdk
libgdbm2-1.8.0-24mdk
sysklogd-1.4.1-5mdk
libgdk_pixbuf2.0_0-2.2.4-9mdk
libgdk-pixbuf2-0.22.0-2mdk
perl-GTK-GdkPixbuf-0.7009-1mdk
gdk-pixbuf-loaders-0.22.0-2mdk
perl-GTK-GdkImlib-0.7009-1mdk
gdm-2.4.4.7-6mdk
libgdkcardimage0-2.4.2-2mdk

No strange gd, compiled-in used.

Reproduce code:
---------------
<?php
$img=imageCreate(20,30);
$bgcolor=imageColorAllocate($img,255,0,255);
$fgcolor=imageColorAllocate($img,0,255,255);
imageFill($img,0,0,$bgcolor);

imageRectangle($img,0,0,0,0,$fgcolor);

header("content-type:image/png");
imagePNG($img);

imageColorDeallocate($img,$fgcolor);
imageColorDeallocate($img,$bgcolor);
imageDestroy($img);
?>

Expected result:
----------------
Square 1x1 pixel size.

Actual result:
--------------
Parallelepiped 1x2 pixels:

2px on Y-axis.
1px on X-axis.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2007-11-06 12:33 UTC] andreythinking at gmail dot com
Of cause, it possible to use another function to put one pixel, but rectangle required, to work inside user function, that makes diagrams etc.
 [2007-11-11 18:54 UTC] jani@php.net
What was the configure line you used? (PHP comes with bundled GD library with lot of fixes, if you didn't use that, try it)
 [2007-11-12 09:54 UTC] pajoye@php.net
Try with a 5.2 snapshot or with 5.2.5, the problem should be fixed in 5.2.5 and in cvs. This regression was introduced in 5.2.4.

If you use an external library, you have to use the CVS version of libgd. The last release does not contain the fix (2.0.35).

However, as suggested by Jani, you should use the bundled library. It contains many more features (fixes are synced now, except for the threaded environments). To do so use the "--with-gd" configure option without any argument.
 [2007-11-12 11:19 UTC] andreythinking at gmail dot com
I _always_ use bundled in gd library. My configure line is:

./configure --prefix=/usr/local/php5 --with-apache=../apache_1.3.29 --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr/lib/python2.3/lib-dynload/

* * *

Oh! I discover new variations of this bug.
Try to draw 1x1 pixel rectangle with another coordinats:
imageRectangle($img,1,1,1,1,$color);
imageRectangle($img,5,5,5,5,$color);
imageRectangle($img,10,10,10,10,$color);
etc.
The parallelepiped 3x1 pixels is burned.
 [2007-11-12 11:47 UTC] pajoye@php.net
Please try using the _latest_ php 5.2 release or using a snapshot.

I can't reproduce your problem. By the way, in your latest example, you use $color and not $fgcolor, it is certainly why you don't see the pixels, they are drawn using the background colors (index color 0).
 [2007-11-12 11:55 UTC] andreythinking at gmail dot com
:-)
I check this example on identical to firts message script. Simply, I type this example "by hands.

The right code:
<?php
$k=imageCreate(20,30);
$bgcolor=imageColorAllocate($k,255,0,255);
$fgcolor=imageColorAllocate($k,0,255,255);
imageFill($k,0,0,$bgcolor);

imageRectangle($k,1,1,1,1,$fgcolor);
#imageFilledRectangle($k,1,0,1,1,$fgcolor);
#imageFilledRectangle($k,2,0,2,2,$fgcolor);
#imageFilledRectangle($k,3,0,3,3,$fgcolor);
#imageFilledRectangle($k,4,0,4,4,$fgcolor);
#imageFilledRectangle($k,5,0,5,5,$fgcolor);


header("content-type:image/png");
imagePNG($k);

imageColorDeallocate($k,$fgcolor);
imageColorDeallocate($k,$bgcolor);
imageDestroy($k);
?>

Thanks, after 12:00pm, when traffic will be half-cheaper, I try new version of PHP.
 [2007-11-12 11:58 UTC] andreythinking at gmail dot com
Commented lines in code listing aren't signifys.
 [2007-11-13 08:35 UTC] andreythinking at gmail dot com
I believe you orally. New version is not needed by me (to download it only to see bug correction).
 [2007-11-13 09:39 UTC] pajoye@php.net
Already fixed.
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Mon Dec 01 13:00:01 2025 UTC