ブレンドモード いくつか
canvasのgetImageData,putImageData等を使用したピクセル操作でFlashのブレンドモードを再現
demo 01
demo 02
demo 03
demo 04
<script src="bm.js"></script>
<!-- 上のレイヤー -->
<canvas id="top" width="300" height="300"></canvas>
<!-- 下のレイヤー -->
<canvas id="bottom" width="300" height="300"></canvas>
<!-- 変換先のcanvas -->
<canvas id="output" width="300" height="300"></canvas>
var bmjs = new bm();
bmjs.apply("bottom", "top", "output", bmjs.MULTIPLY); // 乗算
// bmjs.apply("bottom", "top", "output", bmjs.DIFFERENCE); // 差の絶対値
// bmjs.apply("bottom", "top", "output", bmjs.LINEARDODGE); // 覆い焼き(リニア)- 加算
// bmjs.apply("bottom", "top", "output", bmjs.SCREEN); // スクリーン
// bmjs.apply("bottom", "top", "output", bmjs.OVERLAY); // オーバーレイ
// bmjs.apply("bottom", "top", "output", bmjs.HARDLIGHT); // ハードライト
// bmjs.apply("bottom", "top", "output", bmjs.VIVIDLIGHT); // ビビットライト
// bmjs.apply("bottom", "top", "output", bmjs.DARKEN); // 比較 (暗)
// bmjs.apply("bottom", "top", "output", bmjs.COLORBURN); // 焼き込みカラー
// bmjs.apply("bottom", "top", "output", bmjs.LINEARBURN); // 焼き込み (リニア)
// bmjs.apply("bottom", "top", "output", bmjs.LIGHTEN); // 比較 (明)
// bmjs.apply("bottom", "top", "output", bmjs.ALPHA); // アルファ