2011-08-28 10 views
0

오버레이 컬러의 비트 맵을 캔버스로 그릴 수있는 좋은 방법이 있습니까?Html5 캔버스 오버레이

투명 픽셀이 아닌 모든 픽셀에 대해 고유 한 색상으로 비트 맵을 그립니다. 그 해결책이 없기 때문에 나에게 도움이 될 수 있습니다! 그것을 할 수

감사의

+0

내가 전에 그것을 완료하지 않은,하지만 난 XOR 연산이 그것을 할 것입니다 생각 (XOR로 이런 짓을하고 자바 10 년 전 애플릿) .. http://www.whatwg.org/specs/web-apps /current-work/multipage/the-canvas-element.html XOR –

답변

2

Live Demo

한 가지 방법은 각 픽셀을 통해 루프하고 당신이 그것을 원하는 값으로 R/G/B 값을 변경합니다. 알파 값을 건너 뛰면 불투명 픽셀을 원하는 색상으로 만 변경합니다.

var canvas = document.getElementById("canvas"), 
    ctx = canvas.getContext("2d"), 
    image = document.getElementById("testImage"); 

ctx.drawImage(image,0,0); 

var imgd = ctx.getImageData(0, 0, 128, 128), 
    pix = imgd.data, 
    uniqueColor = [0,0,255]; // Blue for an example, can change this value to be anything. 

// Loops through all of the pixels and modifies the components. 
for (var i = 0, n = pix.length; i <n; i += 4) { 
     pix[i] = uniqueColor[0]; // Red component 
     pix[i+1] = uniqueColor[1]; // Green component 
     pix[i+2] = uniqueColor[2]; // Blue component 
     //pix[i+3] is the transparency. 
} 

ctx.putImageData(imgd, 0, 0); 

// Just extra if you wanted to display within an img tag. 
var savedImageData = document.getElementById("imageData"); 
savedImageData.src = canvas.toDataURL("image/png"); 
+0

yeap을 검색하십시오. 나는이 방법을 시도했지만 그것은 내 필요에 비해 너무 작습니다. – webshaker

+0

@webshaker 너무 작 으면 어떨까요? 위 예제는 예제 이미지를 사용합니다. – Loktar

+0

oups 너무 늦어서 죄송합니다. 사실 내가 할 triyng을 설명 할 것입니다. 나는 편집인을 만들고있다. 나는 화면에서 스프라이트를 선택할 수 있기를 원한다. 나는 정사각형을 사용하여 탐지를 만들었지 만 정확하지는 않습니다. 필자는 선택된 스프라이트를 찾기 위해 숨겨진 버퍼에 특정 색상의 각 스프라이트를 그려 넣는 것을 좋아한다. – webshaker