本質的にスターバースト効果のある画像があります。スターバーストの色は白で、背景は透明です(PNG w / Alpha)。これらのスターバーストをHTML5キャンバスのランダムな場所にランダムに生成すると同時に、ランダムな色相、彩度、明度(HSL)の値を生成します。これが物事を単純化する場合、これらはRGB値である可能性があります。
目標は、ランダムに生成されたHLS値に基づいて、PNGをキャンバスにレンダリングする前に、HTML5キャンバスに表示するためにPNGの色を変更することです。
StackOverflowや他のサイトで他の投稿をいくつか読んだことがありますが、私が見た唯一の解決策は、キャンバスにレンダリングし、画像が表示されている場所の座標を取得し、ピクセルごとに色を変更することです。 。理論的にはこれでうまくいく可能性がありますが、一部の画像がわずかに重なる場合があります。また、背景がすでに存在する場合、私が理解していることから、背景の色も変更されますが、これも私にとってはあまり解決策ではありません。
これがCanvasの機能の範囲外である場合、フォールバックとして、GD2またはImagickを使用してPHPを介して、またはGimp、ImageMagick、またはその他のコマンドラインを介して画像を動的に再色付けしても問題ないと思います。画像ライブラリ...
どうもありがとう!
- 結果 -
オフスクリーンキャンバスレンダリングの最初の提案をしてくれた@jing3142と、私が見逃していた重要な部分を提供してくれた@Jarrodに特に感謝します。globalCompositeOperation = "source-in"
コンセプトの実用的な実装は次のとおりです。http://jsfiddle.net/fwtW2/2/
で動作します:
- クロム
- Firefox
- IE 9(他のバージョンはテストしていません)