私が考えることができる最も近い点は、IE固有のものです。あなたが望むことを行うことができるかもしれないクロマフィルタがあります青は透明になります、あなたのケースでは、何か白が透明になります)。参照:http://www.ssi-developer.net/css/visual-filters.shtml。他のブラウザやCSS3ではこれと同等のものは見つかりません。
ドキュメント内のすべてのイメージを検索し、キャンバス要素に置き換え、イメージをキャンバスにペイントし、ピクセル単位でイメージデータを通過させ、ピクセルが特定の色は、アルファを0(透明)に変更します。
このコンセプトのクイックPOCがあります。 Chrome & FFで動作するようにするには、ウェブサーバーでこれを実行する必要があります。IE9ベータ版でローカルに実行できます。
純粋な白色のRGB(255,255,255)を使用してイメージを変更するだけです。アルファチャンネルを0に設定すると、画像内の白いピクセルが透明になります。
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<style type="text/css">
body { background-color: #00f; margin: 0px; padding: 0px; }
</style>
<script type="text/javascript" src="jquery-1.4.4.min.js"></script>
</head>
<body>
<img src="test.png">
<img src="test.png">
</body>
<script type="text/javascript">
$(function() {
$("img").each(function() {
var $this = $(this);
var tim = $this.get(0);
var idx = $this.index();
var canvas = null;
var ctx = null;
var img = new Image();
img.onload = function() {
copyImageToCanvas(img);
};
img.setAttribute("src", tim.src);
function copyImageToCanvas(aImg) {
canvas = document.createElement("canvas");
var w = typeof aImg.naturalWidth == "undefined" ? aImg.width : aImg.naturalWidth;
var h = typeof aImg.naturalHeight == "undefined" ? aImg.height : aImg.naturalHeight;
canvas.id = "img" + idx;
canvas.width = w;
canvas.height = h;
$this.replaceWith(canvas);
ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, w, h);
ctx.drawImage(aImg, 0, 0);
makeTransparent(aImg);
}
function makeTransparent(aImg) {
var w = typeof aImg.naturalWidth == "undefined" ? aImg.width : aImg.naturalWidth;
var h = typeof aImg.naturalHeight == "undefined" ? aImg.height : aImg.naturalHeight;
var imageData = ctx.getImageData(0, 0, w, h);
for (var x = 0; x < imageData.width; x++)
for (var y = 0; y < imageData.height; y++) {
var offset = (y * imageData.width + x) * 4;
var r = imageData.data[offset];
var g = imageData.data[offset + 1];
var b = imageData.data[offset + 2];
//if it is pure white, change its alpha to 0
if (r == 255 && g == 255 && b == 255)
imageData.data[offset + 3] = 0;
};
ctx.putImageData(imageData, 0, 0);
}
});
});
</script>
</html>
ブラウザ固有の機能を使用している可能性がありますが、その価値はありません。バッチで変換を行うアプリケーションを見つけるだけです。 ImageMagickのコマンドラインユーティリティはおそらくあなたを動かすための何かを持っています。 –
ブライアンに感謝します。私はそれがおそらくそれになるだろうと思うが、私は最初に私のオプションを探求したい。 –