javascript/canvasを使用して画像(ロゴ、アプリアイコンなど)を白(透明度を除く)に変換する方法を探しています。 がhttp://jsfiddle.net/4ubyj/キャンバスを使用して不透明なピクセルを白にする
5
A
答えて
7
キャンバスのAPIのようなもののために、具体的な方法を合成している「だけのオリジナル画像で透明でないピクセルで描画します。」これは、画像データを乱すよりはるかに簡単です。 (今インライン画像付き)
帽子の先端@ WilliamVanRensselaerの最初のバイオリンに
jsFiddle例。
希望する合成操作はsource-in
です。これは、「描いている画像の不透明なピクセルの上に塗りつぶしたい部分の不透明部分を描画する」ことを意味します。
HTML:
<a href="javascript:doIt()">paint non-transparent regions white</a><br>
<canvas id="canvas" width="600" height="200"></canvas>
Javascriptを:
var canvas = document.getElementById("canvas"),
ctx = canvas.getContext("2d");
imgSrc = "http://d.pr/Td69+";
var b = document.getElementsByTagName("body")[0];
var i = document.createElement("img");
i.src = imgSrc;
i.style.setProperty("display", "none");
i.onload = function() {
ctx.drawImage(i, 0, 0);
}
b.appendChild(i);
window.doIt = function() {
ctx.globalCompositeOperation = "source-in";
ctx.fillStyle = "#ffffff";
ctx.fillRect(0, 0, 600, 200);
}
0
ここであなたが始めるために何か:
は、ここで私は(明らかに、静止画像を使用して)欲しいものの例です。アルファがゼロでない場合、これは基本的にピクセルを白に変更しますが、必要に応じて変更することができます。
var canvas = document.getElementById("canvas"),
ctx = canvas.getContext("2d");
// Put something on the canvas (can be an image)
ctx.font = "100px Arial";
ctx.fillText("Google", 20, 130);
// Get image data for part of the canvas (to see effects)
var img = ctx.getImageData(20, 40, 80, 100),
imgData = img.data;
// Loops through bytes and change pixel to white if alpha is not zero.
for (var i = 0; i < imgData.length; i += 4) {
if (imgData[i + 3] !== 0) {
imgData[i] = 255;
imgData[i + 1] = 255;
imgData[i + 2] = 255;
}
}
// Draw the results
ctx.putImageData(img, 20, 40);
+0
白にしても、完全に透明なピクセルのRGBを設定しない理由。 (スキップしたり、テストを避ける方が速いかどうかをテストする必要があります)どういうわけか、@ellisbenがはるかに優れた解決策を持っていることを除いて、私は+1します。 – Phrogz
関連する問題
- 1. HTML5キャンバスにのみ透明でないピクセルをコピーする
- 2. PILを使用してすべての白いピクセルを透明にしますか?
- 3. CIImageを使用してすべての黒ピクセルを透明にします。
- 4. HTML5キャンバス - ペイントアプリケーションの不透明性問題
- 5. ドラッグイメージを半透明でなく不透明にする
- 6. Matlabでピクセルを透明にする
- 7. キャンバスImageData白いピクセルを削除する
- 8. MKMapViewを透明にするが、オーバーレイを不透明にする
- 9. キャンバスに透明なテキストを描く
- 10. 透明なWPFの不透明要素
- 11. JavaScriptキャンバス - 画像の不透明度を変更する
- 12. 不透明なポインタを使用してxmlデータを取得する
- 13. 透明度はCSS3 PIEを使用してie7で透明になります。
- 14. PHP:不透明度のJPEGに透明なPNGを追加
- 15. flash as3 tween不透明子要素の不透明度に影響しない
- 16. MFCツールバーとPNGイメージを透明に使用すると、不正な透明効果が発生する
- 17. イメージを不透明から半透明にアニメーション化する(そして半透明に保つ)
- 18. 透明なBGと不透明なフォアグラウンドを持つiOSモーダルViewController
- 19. RGBピクセルの透明度
- 20. ggplot2を使って白黒の透明なオーバーラップヒストグラムを作成するには?
- 21. .NETの不透明なクリックスルーフォーム
- 22. Qt不透明なカラーブラシ?
- 23. Java - 不透明な色
- 24. Javascriptを使用してIE8で不透明度を変更するonkeyup()(再び)
- 25. C#でBackgroundWorkerを使用してフォームの不透明アニメーションを作成する
- 26. )($の.parentを使用して、不透明度のCSSプロパティを変更する
- 27. Android:Lockscreenを不透明にする
- 28. CALayerを使用してUILabelの不透明度をアニメーション化しますか?
- 29. C#コンソールの不透明度/透明度
- 30. 透明なUIImageViewを使用して他のUIImageViewsをクリップする
+1画像データを混乱させる代わりに 'globalCompositeOperation'を使用します。これは、他の(完全に正しい)ソリューションよりも早くゴブでなければなりません。 – Phrogz
これは完璧です、ellisbben! Phrogzが言及したように速いだけでなく、さまざまなシナリオでより適切になる原点のアクセス許可の問題も回避します。乾杯! –