我正在尝试建立一个网站,你可以在canvas
上绘制它,并使其成为GIF
到目前为止,我成功了,但我在颜色方面遇到了问题,我解释了我的网站是如何工作的:
1)用户在数组对象中的画布及其saven上绘制,如下所示:
[{x: 1, y:1, radius: 8, color: "blue"}, {x: 2, y:3, radius: 16, color: "red"} ...]
鼠标在画布上的每次移动都是数组中的一个对象
现在我将它作为json发送到php页面,现在在php页面中我有了预定义的颜色数组,如下所示:
$colors = array(
'brown' => array(
165,
42,
42
),
'cadetblue' => array(
95,
158,
160
),
'chartreuse' => array(
127,
255,
0
),
'chocolate' => array(
210,
105,
30
),
'coral' => array(
255,
127,
80
),
'crimson' => array(
220,
20,
60
)
);
到目前为止一切顺利,现在当我在图像上绘制时,我循环从客户端发送给m的数组中的每个对象,我获取颜色并使用php函数创建一个填充椭圆,代码如下:
for ($i = 0; $i <= $j; $i++) {
$colorName = $model[$i]->color;
$color = imagecolorallocate($img, $colors[$colorName][0] ,$colors[$colorName][1] , $colors[$colorName][2]);
imagefilledellipse($img, $model[$i]->x, $model[$i]->y, $model[$i]->radius * 2, $model[$i]->radius * 2, $color);
}
现在它开始是好的,但突然在画的中间,它回到了我在网站上画的第一个颜色
我不知道为什么,我看着我发送给服务器的数据,这个颜色在它背后的位置出现了。
要说明的图像:
我在网站上画的:
我得到的结果是:
绘图的完整PHP代码:
发送到服务器的数据:
请注意:在巧克力颜色的中间,它会变回淡黄色,即使这种颜色在发送到此位置的服务器的数据中也存在
发布于 2016-09-03 13:17:19
好了,问题解决了,我解释了导致问题的原因和解决方案
问题是您不能为单个图像创建超过255种颜色
当我在php.net上阅读评论时,我发现了这条注释
请注意,您只能为任何图像调色板分配255种颜色。如果您尝试赋值更多,imagecolorallocate()将失败。
在我的代码中,我创建了超过255种颜色,因为它返回到开始
现在我为每个框架创建了6种颜色,并用它们来绘制,问题就解决了
https://stackoverflow.com/questions/39306439
复制相似问题