2016-08-11 84 views
0

你好互联网的亲爱的人,PHP和帆布像素颜色替换

我有一个有趣的剧本的想法,但我试图找到实现我想要的东西的最佳方式。

想法很简单。替换像素颜色,每次都可以为角色实现自定义颜色。我有这样的家伙,我将使用PHP的画布,也许SVG生成这些图片: 源图像

enter image description here

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

enter image description here

我认为一些方法来做到这一点:

1)具有阿尔法只像素,并从后面和地方阿尔法图像之上实现底纹颜色它和深度

2)画出每个像素单独(但这种做法是不是我真正想要做的)

3)使用类似色相/饱和度的一些事情,但是这超出了我的知识。

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

谢谢。

回答

0

已经过了凌晨2点,所以这里有一个简短的答案。

最好的选择:创建一个所有你的性格变化的spritesheet并从spritesheet切出所需精灵这样的:drawImage(spritesheet, spriteX, spriteY, spriteWidth, spriteHeight, canvasX, canvasY, spriteWidth, spriteHeight)

下一个最好的选择:与充满个性的创建spritesheet,然后有多个一套更换裤子(只是裤子 - 不是全角色),替换衬衫,替换武器等。首先绘制完整的角色,然后在角色上绘制所需的裤子 - 用所需的裤子覆盖原来的裤子。这样,您就有效地是“穿衣戴帽”,在更换裤子,衬衫,武器的性格等

如果你需要运行时再显色,使用合成动态重新着色只是裤子的切口:

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

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

关于您的#3:如果您只是更换单一的RGB颜色,则不需要混淆饱和度。