Signature_pad: cambiar el color de fondo sobre la marcha

Creado en 19 nov. 2015  ·  4Comentarios  ·  Fuente: szimek/signature_pad

Oye,

al inicializar, tengo el panel de firma (lienzo) configurado en un color específico, pero me gustaría guardarlo en un fondo transparente o blanco. Ya utilicé la función removeBlanks del prototipo vinculado para capturar solo la firma, pero el bg sigue siendo rgb (255,243,204), trato de cambiarlo a través de
firmaPad.backgroundColor = rgb(255, 255, 255); pero parece que al firmar trazo, la imagen base64 ya ha sido registrada.

¿Algunas ideas?

Comentario más útil

¿Tal vez simplemente intercambiar colores antes de enviarlo al servidor funcionaría? Puede obtener datos de imagen sin procesar usando CanvasContext2D#getImageData() , iterar sobre cada píxel e intercambiar el color de fondo visible (entero de 8 bits) por el deseado. Guarde los datos de imagen modificados en un lienzo fuera de la pantalla y vuelva a leerlos usando Canvas#toDataURL() . Podría funcionar :)

POR CIERTO. El color de fondo se aplica cuando se borra el lienzo, por lo que solo al inicializar o cuando llama a SignaturePad#clear() explícitamente.

Todos 4 comentarios

¿Tal vez simplemente intercambiar colores antes de enviarlo al servidor funcionaría? Puede obtener datos de imagen sin procesar usando CanvasContext2D#getImageData() , iterar sobre cada píxel e intercambiar el color de fondo visible (entero de 8 bits) por el deseado. Guarde los datos de imagen modificados en un lienzo fuera de la pantalla y vuelva a leerlos usando Canvas#toDataURL() . Podría funcionar :)

POR CIERTO. El color de fondo se aplica cuando se borra el lienzo, por lo que solo al inicializar o cuando llama a SignaturePad#clear() explícitamente.

@szimek gracias por la respuesta. Estaba buscando aprovechar la función removeBlanks para esto también. Solo tengo que descubrir cómo saber si es un píxel de fondo frente a un píxel de firma.

También hay una manera de obtener la representación de matriz json de la firma
es decir, {lx: 20, ly: 34, mx: 20, my: 34}

Lamentablemente no por el momento. Solo los últimos 4 puntos se guardan en la memoria, por lo que no hay forma de acceder a todos los puntos. Es posible que cambie en el futuro, pero hay otros problemas (principalmente relacionados con pantallas retina/no retina) con mayor prioridad.

Sin embargo, podría cambiar fácilmente la biblioteca para almacenar todos los puntos si realmente necesita estos datos.

@khawye Si tiene más preguntas, vuelva a abrir este problema.

¿Fue útil esta página
0 / 5 - 0 calificaciones