Php和Canvas像素颜色替换

时间:2016-08-11 05:52:02

标签: php canvas svg

亲爱的互联网用户,您好

我对有趣的剧本有一个想法,但我正在努力找到实现我想要的最好方法。

想法很简单。更换像素颜色,每次都为角色实现自定义颜色。我有这个人,我将使用php canvas和svg来生成这些图像: 源图像

enter image description here

而我基本上需要的是通过脚本把它变成这样:最终结果

enter image description here

我考虑过几种方法:

1)只有alpha像素并从后面对其进行着色并将alpha图像置于顶部以实现阴影和深度

2)单独绘制每个像素(但这个选项不是我真正想做的)

3)使用像色调/饱和度这样的东西,但这是我所不知道的。

也许我可以做些什么来实现它。

谢谢。

1 个答案:

答案 0 :(得分:0)

已经过了凌晨2点所以这是一个简短的回答。

最佳选择:创建一个包含所有角色变体的spritesheet,并从精灵表格中删除所需的精灵,如下所示:drawImage(spritesheet, spriteX, spriteY, spriteWidth, spriteHeight, canvasX, canvasY, spriteWidth, spriteHeight)

下一个最佳选择:创建一个带有完整角色的spritesheet,然后有多套替换裤子(只是裤子 - 不是完整角色),替换衬衫,替换武器等。完整的角色,然后在角色上绘制所需的裤子 - 用所需的裤子覆盖原来的裤子。这样你就可以有效地穿着"可替换裤子,衬衫,武器等中的角色

如果您需要运行时重新着色,请使用合成动态重新着色裤子的剪裁:

  • 在主画布上创建完整字符
  • 在第二个画布上,创建裤子。
  • 设置`secondContext.globalCompositeOperation =' source-in'
  • 设置所需的fillStyle。
  • 在整个第二个画布上填充一个矩形:secondContext.fillRect(0,0,secondCanvas.width,secondCanvas.height)

关于你的#2:操纵像素很贵 - 尽可能避免。

关于你的#3:如果你只是更换一种RGB颜色,那么你就不需要弄乱饱和度了。亮度。