2016-08-11 137 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顏色,則不需要混淆飽和度。