Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Image Functions : imagerectangle

imagerectangle

Draw a rectangle (PHP 4, PHP 5)
bool imagerectangle ( resource image, int x1, int y1, int x2, int y2, int color )


Related Examples ( Source code ) » imagerectangle




Code Examples / Notes » imagerectangle

carl

Oh I don't know.  He was on the right track..
<?php
$rows = 5;
$cols = 11;
$eachx = 12;
$eachy = 18;
$max = array($cols*$eachx, $rows*$eachy);
$im = imagecreatetruecolor($max[0]+1,$max[1]+1);
$white = imagecolorallocate($im,255,255,255);
imagefill($im,0,0,$white);
$black = imagecolorallocate($im,50,50,50);
for($x=$max[0]/2;$x>=0;$x-=$eachx) {
imagerectangle($im, ($max[0]/2)+$x,0, ($max[0]/2)-$x,$max[1], $black);
}
for($y=$max[1]/2;$y>=0;$y-=$eachy) {
imagerectangle($im, 0,($max[1]/2)+$y, $max[0],($max[1]/2)-$y, $black);
}
header("Content-type: image/jpeg");
imagejpeg($im,'',80);
imagedestroy($im);
?>


corey

Matt,
I agree that drawing 100 boxes for a 10x10 square is ludicrous. However, if we're going to talk about the best way to draw it in GD, you're still off.
Since a rectangle will draw two vertical lines in one draw, we should use it to our advantage. You can draw 5 rectangles that have the tops and bottoms outside of the image, and there you have your ten rows. Draw 5 more who's sides are out of the image and you have your columns. We just drew a 10x10 (you could do 11x11) grid in 10 draw operations.
:)


matt

Lets not do it Mr Benson's way OK!
I'm sure if I had to draw a 10x10 grid on paper I wouldn't do it by drawing 100 individual squares, redrawing nearly half of the lines twice.
I'd probably do it by drawing 11 vertical lines and 11 horizontal lines.
function ImageGrid2(&$im,$startx,$starty,$width,$height,$xcols,$yrows,&$color) {
$endy = $starty + $height * $yrows;
for ( $x=0; $x <= $xcols; $x++ ) {
$x1 = $startx + $width * $x;
imageline ( $im, $x1, $starty, $x1, $endy, $color );
}
$endx = $startx + $width * $xcols;
   for ( $y=0; $y <= $yrows; $y++ ) {
    $y1 = $starty + $height * $y;
    imageline ( $im, $startx, $y1, $endx, $y1, $color );
   }
}


rogier

In addition to Corey's note, this is the kind of code he means. Note that I always draw an outer grid border, so drawing lines will always take
1 + ceil((rows+cols)/2) actions. For a 20X20 grid, this means 21 actions, a 10X25 grid takes 19 Actions
<?php
function draw_grid(&$img, $x0, $y0, $width, $height, $cols, $rows, $color) {
   //draw outer border
   imagerectangle($img, $x0, $y0, $x0+$width*$cols, $y0+$height*$rows, $color);
   //first draw horizontal
   $x1 = $x0;
   $x2 = $x0 + $cols*$width;
   for ($n=0; $n<ceil($rows/2); $n++) {
       $y1 = $y0 + 2*$n*$height;
       $y2 = $y0 + (2*$n+1)*$height;
       imagerectangle($img, $x1,$y1,$x2,$y2, $color);
   }
   //then draw vertical
   $y1 = $y0;
   $y2 = $y0 + $rows*$height;
   for ($n=0; $n<ceil($cols/2); $n++) {
       $x1 = $x0 + 2*$n*$width;
       $x2 = $x0 + (2*$n+1)*$width;
       imagerectangle($img, $x1,$y1,$x2,$y2, $color);
   }
}
//example
$img = imagecreatetruecolor(300, 200);
$red   = imagecolorallocate($img, 255,   0,   0);
draw_grid($img, 0,0,15,20,20,10,$red);
header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
?>
have fun ;)


eustaquiorangel

If you want an empty rectangle, I mean, just the borders, fill it first with the ImageFilledRectangle function with the background color and then draw it with this function.

jbenson

For those wanting a function to draw a grid I've created one.  I hope this is the right place to post it.
function ImageGrid(&$im,$startx,$starty,$width,$height,$xcols,$yrows,&$color) {
for ( $x=0; $x < $xcols; $x++ ) {
  for ( $y=0; $y < $yrows; $y++ ) {
     $x1 = $startx + ($width * $x);
     $x2 = $startx + ($width * ($x+1));
     $y1 = $starty + ($height * $y);
     $y2 = $starty + ($height * ($y+1));
     ImageRectangle($im, $x1, $y1, $x2, $y2, $color);
  }
}
} // end function ImageGrid


gros

1 rectangle = 4 lines.
It's easier...


administrador ensaimada sphoera punt com

<?php
// With this function you will draw rounded corners rectangles with transparent colors.
// Empty (not filled) figures are allowed too!!
function draw_roundrectangle($img, $x1, $y1, $x2, $y2, $radius, $color,$filled=1) {
if ($filled==1){
imagefilledrectangle($img, $x1+$radius, $y1, $x2-$radius, $y2, $color);
imagefilledrectangle($img, $x1, $y1+$radius, $x1+$radius-1, $y2-$radius, $color);
imagefilledrectangle($img, $x2-$radius+1, $y1+$radius, $x2, $y2-$radius, $color);
imagefilledarc($img,$x1+$radius, $y1+$radius, $radius*2, $radius*2, 180 , 270, $color, IMG_ARC_PIE);
imagefilledarc($img,$x2-$radius, $y1+$radius, $radius*2, $radius*2, 270 , 360, $color, IMG_ARC_PIE);
imagefilledarc($img,$x1+$radius, $y2-$radius, $radius*2, $radius*2, 90 , 180, $color, IMG_ARC_PIE);
imagefilledarc($img,$x2-$radius, $y2-$radius, $radius*2, $radius*2, 360 , 90, $color, IMG_ARC_PIE);
}else{
imageline($img, $x1+$radius, $y1, $x2-$radius, $y1, $color);
imageline($img, $x1+$radius, $y2, $x2-$radius, $y2, $color);
imageline($img, $x1, $y1+$radius, $x1, $y2-$radius, $color);
imageline($img, $x2, $y1+$radius, $x2, $y2-$radius, $color);
imagearc($img,$x1+$radius, $y1+$radius, $radius*2, $radius*2, 180 , 270, $color);
imagearc($img,$x2-$radius, $y1+$radius, $radius*2, $radius*2, 270 , 360, $color);
imagearc($img,$x1+$radius, $y2-$radius, $radius*2, $radius*2, 90 , 180, $color);
imagearc($img,$x2-$radius, $y2-$radius, $radius*2, $radius*2, 360 , 90, $color);
}
}
?>
More functions at http://www.sphoera.com


Change Language


Follow Navioo On Twitter
gd_info
getimagesize
image_type_to_extension
image_type_to_mime_type
image2wbmp
imagealphablending
imageantialias
imagearc
imagechar
imagecharup
imagecolorallocate
imagecolorallocatealpha
imagecolorat
imagecolorclosest
imagecolorclosestalpha
imagecolorclosesthwb
imagecolordeallocate
imagecolorexact
imagecolorexactalpha
imagecolormatch
imagecolorresolve
imagecolorresolvealpha
imagecolorset
imagecolorsforindex
imagecolorstotal
imagecolortransparent
imageconvolution
imagecopy
imagecopymerge
imagecopymergegray
imagecopyresampled
imagecopyresized
imagecreate
imagecreatefromgd2
imagecreatefromgd2part
imagecreatefromgd
imagecreatefromgif
imagecreatefromjpeg
imagecreatefrompng
imagecreatefromstring
imagecreatefromwbmp
imagecreatefromxbm
imagecreatefromxpm
imagecreatetruecolor
imagedashedline
imagedestroy
imageellipse
imagefill
imagefilledarc
imagefilledellipse
imagefilledpolygon
imagefilledrectangle
imagefilltoborder
imagefilter
imagefontheight
imagefontwidth
imageftbbox
imagefttext
imagegammacorrect
imagegd2
imagegd
imagegif
imagegrabscreen
imagegrabwindow
imageinterlace
imageistruecolor
imagejpeg
imagelayereffect
imageline
imageloadfont
imagepalettecopy
imagepng
imagepolygon
imagepsbbox
imagepsencodefont
imagepsextendfont
imagepsfreefont
imagepsloadfont
imagepsslantfont
imagepstext
imagerectangle
imagerotate
imagesavealpha
imagesetbrush
imagesetpixel
imagesetstyle
imagesetthickness
imagesettile
imagestring
imagestringup
imagesx
imagesy
imagetruecolortopalette
imagettfbbox
imagettftext
imagetypes
imagewbmp
imagexbm
iptcembed
iptcparse
jpeg2wbmp
png2wbmp
eXTReMe Tracker