首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >也许PHP还记得颜色?

也许PHP还记得颜色?
EN

Stack Overflow用户
提问于 2016-09-03 19:34:47
回答 1查看 69关注 0票数 4

我正在尝试建立一个网站,你可以在canvas上绘制它,并使其成为GIF

到目前为止,我成功了,但我在颜色方面遇到了问题,我解释了我的网站是如何工作的:

1)用户在数组对象中的画布及其saven上绘制,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
[{x: 1, y:1, radius: 8, color: "blue"}, {x: 2, y:3, radius: 16, color: "red"} ...]

鼠标在画布上的每次移动都是数组中的一个对象

现在我将它作为json发送到php页面,现在在php页面中我有了预定义的颜色数组,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
$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函数创建一个填充椭圆,代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
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代码:

http://pastebin.com/0BGUeCF3

发送到服务器的数据:

http://pastebin.com/CPzpJq7f

请注意:在巧克力颜色的中间,它会变回淡黄色,即使这种颜色在发送到此位置的服务器的数据中也存在

EN

回答 1

Stack Overflow用户

发布于 2016-09-03 21:17:19

好了,问题解决了,我解释了导致问题的原因和解决方案

问题是您不能为单个图像创建超过255种颜色

当我在php.net上阅读评论时,我发现了这条注释

请注意,您只能为任何图像调色板分配255种颜色。如果您尝试赋值更多,imagecolorallocate()将失败。

在我的代码中,我创建了超过255种颜色,因为它返回到开始

现在我为每个框架创建了6种颜色,并用它们来绘制,问题就解决了

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39306439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档