Поскольку JPG не поддерживают прозрачность, и в моем случае PNG слишком велики, я пытаюсь заменить цвет (мой пример - белый), установив альфа-цвет. Мой код примерно основан на этом: http://tech.pro/tutorial/1281/chroma-key-video-effects-using-javascript-and-the-html5-canvas-elementHTML5: Эффект зеленого экрана на JPG
Проблема в том, что она ничего не делает! Кроме того, настройка цвета кадров на что-либо также не обновляется. Я знаю, что это что-то просто, я просто не могу взломать его.
HTML
<div id="poo">
<div id="container">
<img id="source" src="http://i.imgur.com/RylDs1h.jpg" />
</div>
</div>
CSS
#greend{
background:black;
width:600px;
}
JS
var img = $("img").get(0);
var $canvasbg = $("<div id='greend' />");
var canvas = $("<canvas></canvas>").get(0);
$canvasbg.append(canvas);
$('#container').append($canvasbg);
var $container = $('#container');
var context = canvas.getContext('2d');
canvas.width = img.clientWidth;
canvas.height = img.clientHeight;
$container.width(img.clientWidth);
$container.height(img.clientHeight);
context.drawImage(img, 0, 0);
var frame = context.getImageData(0, 0, canvas.width, canvas.height);
var length = frame.data.length;
for (var i =0; i <length; i++){
var r = frame.data [i*4+ 0];
var g = frame.data [i*4 + 1];
var b = frame.data [i*4 + 2];
// replace white-ish colours.
if(g > 240 && g < 256 && r > 240 && r < 256 && b > 240 && b < 256){
frame.data[i * 4 + 3] = 0;
}
}
context.putImageData(frame, 0, 0);
jsFiddle здесь: http://jsfiddle.net/Bhqq8/2/
Если вы хотите сделать некоторую отладку, вы поймете, что это проблема XY, и вам действительно нужно спросить http://stackoverflow.com/questions/17035106/context-getimagedata-operation-is-insecure –
Спасибо. Я действительно сделал некоторые отладки и получил предупреждение о безопасности. Инструменты IE Dev не объяснили, что в результате он прекратил манипуляции с изображениями, поэтому я думал, что было что-то еще, что было неправильно. –
Обычно, как только вы получаете необработанное исключение, выполнение скрипта прекращается, что объясняет поведение, которое вы видели. –