Salida de programación Rgb
Al final me negué porque dije que era difícil de conseguir. Pero mi corazón sigue alerta.
A continuación se explica cómo reemplazar colores. El efecto no es malo. Hasta cierto punto
El código principal todavía se copia de otros. Escrito aquí para que conste.
1. La imagen generada por getImageData del lienzo.
Basándonos en este ciclo, podemos sacar esta conclusión
La composición está en formato ARGB, la primera es transparente y la siguiente es rgba.
2. El período de la imagen obtenida debe realizarse en múltiplos de 4; de lo contrario, al menos se atascará.
for(var j = 0; j ltpdata.lengthj = 4){ if(pdata[j]= = = 95)pdata[j]= colorrar[0]; ]= = = 170)pdata[j-1]= color arr[1]; if(pdata[j-2j]= = = 129)pdata[j-2]= color arr[2];}Copiar código p>
3. Tenga en cuenta que el orden de sustitución de colores debe invertirse.
Entonces el orden de 0, 1, 2, 3.
Los colores rgb reemplazados deben ser 3, 2, 1.
Obtener matriz RGB: datos [I], datos [I-1], datos [2].
Como alternativa, mira el código de arriba.
4. Formato de código completo
lt! DOCTYPE html gt lthtml gt ltstyle gt# BTN { ancho: 100 px; alto: 50px fondo: coral; posición: fijo; } lt/estilo gt; , ctx, función myImage mostrar Imagen(){ mi Imagen = nueva Imagen(); mi imagen = " 1719 ebbc 83 be 39 f 0 . webp . jpg "; (c . obtener contexto) { CTX = c . obtener contexto (" 2d "); mi imagen . onload = function () { CTX . dibujar imagen (mi imagen, 0, 0) / Función de color antes del reemplazo getColordata (Colorar, Color2) {imaged = CTX.
getimagedata (0, 0, myimage.width, myimage.height); var pdata = imageD.datafor(var j = 0; j ltpdata.lengthj = 4){ if(pdata[j]= = = color 2[0] ) pdata[j]= color arr[0]; if(pdata[j 1]= = = color 2[1])pdata[j 1]= color arr[1]; 2[2])pdata[j 2]= color arr[2];} ctx.putImageData(imageD, 0, 0); } función cambio de color(){//color RGB getcolordata([102, 51, 153], [95, 170, 129]); } lt/script gt; lt/head gt; ltbody onload = "mostrar imagen()" ltp gt imagen original: