PHP
downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

imagesettile> <imagesetstyle
Last updated: Fri, 30 Jan 2009

view this page in

imagesetthickness

(PHP 4 >= 4.0.6, PHP 5)

imagesetthickness線描画用の線幅を設定する

説明

bool imagesetthickness ( resource $image , int $thickness )

imagesetthickness() は、長方形、多角形、楕円等を描画する際の線幅を thickness ピクセルに設定します。

パラメータ

image

imagecreatetruecolor() のような画像作成関数が返す画像リソース。

thickness

ピクセル単位の線幅。

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。

例1 imagesetthickness() の例

<?php
// 200x100 の画像を作成します
$im imagecreatetruecolor(200100);
$white imagecolorallocate($im0xFF0xFF0xFF);
$black imagecolorallocate($im0x000x000x00);

// 背景を白に設定します
imagefilledrectangle($im0029999$white);

// 線幅を 5 に設定します
imagesetthickness($im5);

// 矩形を描画します
imagerectangle($im141418585$black);

// 画像をブラウザに出力します
header('Content-Type: image/png');

imagepng($im);
imagedestroy($im);
?>

上の例の出力は、たとえば 以下のようになります。

注意

注意: この関数は、GD 2.0.1 以降を必要とします (2.0.28 以降を推奨します)。



imagesettile> <imagesetstyle
Last updated: Fri, 30 Jan 2009
 
add a note add a note User Contributed Notes
imagesetthickness
admin at circle14 dot net
02-Feb-2009 03:33
Here is a custom function I wrote that addresses the line thickness issues with ellipses :

function draw_oval ($image, $pos_x, $pos_y, $elipse_width, $elipse_height, $color, $px_thick) {
$line = 0;
$thickness = $px_thick;
$elipse_w = $elipse_width;
$elipse_h = $elipse_height;
while ($line < $thickness) {
imageellipse($image, $pos_x, $pos_y, $elipse_w, $elipse_h, $color);
$line++;
$elipse_w--;
$elipse_h--;
}
}

I hope you find this useful.
bpatru at gmail dot com
28-Sep-2008 11:01
Apparently imagesetthickness doesn't work if antialiasing is set to true.
baldurien at bbnwn dot eu
12-Mar-2008 02:28
The way that imagesetthickness works with imagerectangle() is pretty strange.

<?php
imagesetthickness
(1);
imagerectangle($im, 10, 10, 50, 50, $red);
?>

This will draw a 41x41 square (because gd need the bottom right pixel, inclusive. 50 should get replaced by 49). This will "work" like:

<?php
imageline
($im, 10, 10, 10, 50, $red);
imageline($im, 10, 10, 50, 10, $red);
imageline($im, 50, 10, 50, 50, $red);
imageline($im, 10, 50, 50, 50, $red);
?>

The second example:

<?php
imagesetthickness
(2);
imagerectangle($im, 10, 10, 50, 50, $red);
?>

This will draw a 43x43 square because the border (thickness) is set to 2. *however* this is not a "regular" border of 2 pixels around the 41x41 original square!

On the left and right, there will be a thickness of 3, while there we be a thickness of 2.

If you take the imageline example, but set the thickness before to 2, this will *almost* do the trick: the left most pixel of the square will not be drawn.

To conclude:

1) do not forget that (width, height) of drawn rectangle is (x2-x1+1, y2-y1+1)
2) thickness is bad implemented (or at least, the behavior i s not documented) on rectangle, as the left/right thickness is not the wanted one.
3) 4*imageline() should do the trick, but after "patching" the top left pixel.
ab at cd dot com
27-Jun-2007 02:05
Note: Also, for me (working under PHP 5.0.2) this function ONLY seems to work with imageline...
-private-
28-Mar-2007 12:01
There is a known bug. Imagesetthickness is NOT working on ellipse.

imagesettile> <imagesetstyle
Last updated: Fri, 30 Jan 2009
 
 
show source | credits | sitemap | contact | advertising | mirror sites