Valores cmyk en imagen

Mira se me olvidaba una cosilla. Una vez que haz echo la conversión de rgb a cmyk, como puedo aplicarla a la imagen con este modelo de color?

1 respuesta

Respuesta
1

Perdona, no te he entendido bien, ¿aplicar a la imagen la conversión a cmyk? La imagen tiene el mismo color ya sea en RGB o CMYK.

¿Puedes explicarte mejor?

Perdona te lo explico mejor.

Realmente lo que necesito es poder tener la imagen en cmyk para poder aplicarle cambios cromáticos dependiendo de sus valores en cada pixel.

Por ejemplo decirle a la aplicación que todos los pixeles que tengan c90,m90,y90,k90 los convierta a c100,m100,y100,k100.

Todo esto es para la impresión en imprenta, por lo que el modelo rgb no me sirve ni es fiable.

He estado buscando alguna cosilla y he visto métodos de javascript como colorspace o colormodel pero no estoy seguro, también hay un pequeño plugin de illustrator llamado Scriptographer que te permite programar cambios en javascript.

Por lo que debería ser posible abrir una imagen en cymk y cambiar los valores cromáticos por zonas o búsquedas.

Creo que ya lo tengo :)

Siguiendo con la idea del canvas (es lo que conozco y sé que funciona bien) y buscando una librería que me haga el trabajo sucio de convertir entre RGB y CMYK he conseguido esto:

http://jsfiddle.net/vfportero/RTtda/

En el ejemplo puedes ver que al pulsar el botón se buscan todos los píxeles azules y los pinta en negro (similar a lo que me preguntabas).

Este es el código:

function paintItBlack(){
 var imgData= context.getImageData(0,0,canvas.width,canvas.height);
 for (var i=0;i<imgData.data.length;i+=4) {
     var cmyk = ColorConverter.toCMYK(new RGB(imgData.data,imgData.data[i+1],imgData.data[i+2]));
    if(cmyk.c == 100 && cmyk.m == 100 && cmyk.y == 0 && cmyk.k == 0){
         cmyk.y = 100;
         cmyk.k = 100;
     }
     var rgb = ColorConverter.toRGB(cmyk);
     imgData.data = rgb.r;
     imgData.data[i+1] = rgb.g;
     imgData.data[i+2] = rgb.b; 
     }
    context.putImageData(imgData,0,0);
}

Obtengo los datos de la imagen con el método "getImageData" y me recorro cada pixel (el for va de 4 en 4 ya que el array nos devuelve los valores RGB y alpha en una posición por lo que los datos del píxel 2 empiezan en la posición 4 del array).

Convierto (con el script que te he comentado antes: http://www.webtoolkit.info/javascript-color-conversion.html) de RGB a cmyk y compruebo si los valores de cyan y magenta son 100 mientras que los de amarillo y negro son 0. Con esto obtenemos los píxeles azules.

En tal caso los ponemos a 100 también (todo 100 es negro como bien sabes) y, una vez recorridos todos, ponemos la imagen alterada de nuevo en el canvas con el método "putImageData".

Así que listo, ya tenemos nuestra casita pintada de negro.

Espero que te sea útil.

Saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas