【问题标题】:Php and Canvas pixel color replacement [closed]Php 和 Canvas 像素颜色替换
【发布时间】:2016-12-17 17:05:25
【问题描述】:

亲爱的互联网人,你好,

我有一个有趣的脚本的想法,但我正在尝试找到完成我想要的最佳方法。

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

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

我考虑了几种方法:

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

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

3) 使用诸如色相/饱和度之类的东西,但这超出了我的知识范围。

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

谢谢。

【问题讨论】:

    标签: php canvas svg


    【解决方案1】:

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

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

    下一个最佳选择:创建一个包含完整角色的 spritesheet,然后有多套替换裤子(只是裤子——不是完整角色)、替换衬衫、替换武器等。首先绘制完整的角色,然后在角色顶部绘制所需的裤子 - 用所需的裤子覆盖原来的裤子。这样你就可以有效地为角色“穿上”可更换的裤子、衬衫、武器等。

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

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

    关于您的 #2:操作像素的成本很高——尽可能避免。

    关于你的#3:如果你只是替换单一的 RGB 颜色,你不需要弄乱饱和度和亮度。

    【讨论】:

      猜你喜欢
      • 2012-09-30
      • 2016-12-27
      • 2010-12-05
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 2020-07-09
      • 2010-12-09
      • 1970-01-01
      相关资源
      最近更新 更多