gd ライブラリのimagefilledpolygon()
.
何らかの理由で、一部の行が 1 ピクセルずれてしまうので、imagepixelset を使用してデバッグし、シェイプ ポイントの色を赤に設定することにしました。
代替テキスト http://www.degreeshowcase.com/other/1.gif 写真を見ると、いくつかの点が形状の内側にあることがわかります...いくつかは外側にあります....非常に非論理的です。
(画像は見やすいように拡大してあります)
誰にも解決策がありますか?
アップデート:
上記の形状のポイントは次のとおりです。0,0 40,0 40,20 20,20 20,40 0,40
生成される形状の高さと幅は 20 の倍数である必要があります....しかし、何らかの理由で形状の一部が 21 ピクセルの高さまたは幅になってしまいます。
必要な形状を取得するためのポイントを解決するためのスクリプトを作成しましたが、その理由を解決できないため、すべての形状を修正するためのスクリプトを作成できません。
<?php
// set up array of points for polygon
$values = array(0,0, 39,0, 39,20, 19,20, 19,39, 0,39);
//My original values were 0,0 40,0 40,20 20,20 20,40 0,40
//I do not understand why some values require minus 1 and others can remain as they were (a multiple of 20)
// create image
$image = imagecreatetruecolor(40, 40);
// allocate colors
$bg = imagecolorallocate($image, 200, 200, 200);
$blue = imagecolorallocate($image, 0, 0, 255);
// fill the background
imagefilledrectangle($image, 0, 0, 39, 39, $bg);
// draw a polygon
imagefilledpolygon($image, $values, 6, $blue);
// flush image
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>