Jump to content
  • 0

Проблема с изменением альфа-канала на canvas


vanix
 Share

Question

Бьюсь над проблемой уже месяц, проблема в следующем:

Существует тег canvas в которое загружается изображение, на загружаемом изображении находится несколько разноцветных областей. При наведении курсора на область, альфа канал меняется у всех пикселей цвета области по следующему алгоритму:


var imgd = ctx.getImageData(0, 0, canvas.width, canvas.height);
var pix = imgd.data;
var x = e.clientX + window.scrollX - this.offsetLeft - 1;
var y = e.clientY+ window.scrollY - this.offsetTop - 1;
var number = 4*x + 4*curWidth*y;
for (var i = 0; i < pix.length; i += 4) {
pix[i+3] = 255
if(pix[i] == pix[number] && pix[i + 1] == pix[number + 1] && pix[i + 2] == pix[number + 2]){
pix[i+3] = 127;
}
}

Но при этом у пикселей цвета некоторых областей помимо альфа-канала меняется так же цвет, при чем в разных браузерах по разному.

Подскажите, пожалуйста, как решить данную проблему

Edited by vanix
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Насколько я понял globalAlpha - используется для изображения в целом, а надо изменить прозрачность у определенной области.

Картинка и так хранится с использованием rgba, то есть каждый 4-ый элемент массива pix отвечает за альфа-канал.

Link to comment
Share on other sites

  • 0

Вам все равно надо будет перерисовывать всё изображение целиком, при перерисовке части изображения будет изменяться цвет. Сохраняйте состояние в стек (.save(), .restore()) и перерисовывайте целиком.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy