결국 나는 뜻밖에도 거절했다, 왜냐하면 나는 달성하기 어렵다고 말했기 때문이다. 하지만 내 마음은 여전히 예민하다.
다음은 색상을 대체하는 방법입니다. 효과가 그런대로 괜찮다. 약간의 땅이 있다
주요 코드는 여전히 다른 사람을 복제하는 것이다. 여기에 기록으로 써 주세요.
1, 캔버스의 getImageData 에서 생성된 그림입니다.
이 주기에 근거하여 이런 결론을 내릴 수 있다
구도는 ARGB 형식입니다. 첫 번째는 투명하고, 다음은 rgba 입니다.
2. 얻은 화면 주기는 4 의 배수로 순환해야 한다. 그렇지 않으면 적어도 카드로 죽는다.
For(var j = 0;; J & ltpdata.lengthj+= 4) {if (pdata [j] = = = = 95) pdata [j] = colorrar [0]; If (pdata [j-1] = = =170) pdata [j-1] = colorarr If (pdata [j-2j] = = =129) pdata [j-2] = colorarr [2]; } 코드 복사
3. 색상이 바뀌는 순서는 반대여야 합니다.
그래서 0, 1, 2,3 의 순서.
대체된 RGB 색상은 3,2, 1 이어야 합니다.
배열 RGB: data [I], data [I- 1], data [2] 를 가져옵니다.
또는 위의 코드를 보세요.
4. 전체 코드 포맷
& lt! Doctype html & gt< html & gt< style & gt # BTN {width:100px; 높이: 50px 배경: 산호; 위치: 고정; 맨 위: 0; } & lt/style & gt;; & lthead & gt & ltscripttype = "text/JavaScript" > Var c, CTX, myImage 함수 displayimage () {myimage = newimage (); Myimage.src = "1719 ebbc 83be39f0.webp.jpg"; C = document.getelementbyid ("mycanvas"); If (c.getcontext) {CTX = c.getcontext ("2d"); Myimage.onload = function () {ctx.drawimage (myimage, 0, 0); }} }//Colorar 대체 색상//대체 전 색상 함수 getColordata (Colorar, Color2) {imaged = CTX. Getimagedata (0 0,0, myimage.width, myimage.height); Varpdata = imaged.data for (var j = 0; J & ltpdata.lengthj+= 4) {if (pdata [j] = = = color2 [0]) pdata [j] = colorarr [; If (pdata [j+1] = = = color2 [1]) pdata [j+1] = If (pdata [j+2] = = = color2 [2]) pdata [j+2] = colorarr [2]; } ctx.putImageData(imageD, 0, 0); } 함수 colorchange () {//RGB color getcolordata ([102,51,1 }</스크립트 > & lt/head & gt;; & lt bodyonload = "displayimage ()" > & LTP> 원본: