Hey,
Beim Initialisieren habe ich das Signierpad (Leinwand) auf eine bestimmte Farbe eingestellt, aber ich möchte es auf einem transparenten oder weißen Hintergrund speichern. Ich habe bereits die verlinkte Prototyp-RemoveBlanks-Funktion verwendet, um nur die Signatur zu erfassen, aber die bg immer noch rgb (255,243,204), über die ich versuche, sie zu ändern
signaturePad.backgroundColor = rgb(255, 255, 255); aber es scheint, als wäre das base64-Image beim Signieren bereits registriert worden.
Irgendwelche Ideen?
Vielleicht würde es funktionieren, einfach die Farben auszutauschen, bevor es an den Server gesendet wird? Sie könnten rohe Bilddaten mit CanvasContext2D#getImageData()
erhalten, über jedes Pixel iterieren und die sichtbare Hintergrundfarbe (8-Bit-Integer) gegen die gewünschte austauschen. Speichern Sie geänderte Bilddaten auf einer Offscreen-Leinwand und lesen Sie sie mit Canvas#toDataURL()
zurück. Könnte funktionieren :)
Übrigens. Die Hintergrundfarbe wird angewendet, wenn die Leinwand gelöscht wird, also nur beim Initialisieren oder wenn Sie SignaturePad#clear()
explizit aufrufen.
@szimek Danke für die Antwort. Ich wollte auch dafür auf die Funktion removeBlanks zurückgreifen. Ich muss nur herausfinden, ob es sich um ein Hintergrundpixel oder ein Signaturpixel handelt.
Gibt es auch eine Möglichkeit, die json-Array-Darstellung der Signatur zu erhalten
dh {lx: 20, ly: 34, mx: 20, my: 34}
Momentan leider nicht. Nur die letzten 4 Punkte werden gespeichert, daher gibt es keine Möglichkeit, auf alle Punkte zuzugreifen. Es könnte sich in Zukunft ändern, aber es gibt einige andere Probleme (hauptsächlich im Zusammenhang mit Retina-/Nicht-Retina-Bildschirmen) mit höherer Priorität.
Sie können die Bibliothek jedoch ganz einfach ändern, um alle Punkte zu speichern, wenn Sie diese Daten wirklich benötigen.
@khawye Wenn Sie weitere Fragen haben, öffnen Sie dieses Problem bitte erneut.
Hilfreichster Kommentar
Vielleicht würde es funktionieren, einfach die Farben auszutauschen, bevor es an den Server gesendet wird? Sie könnten rohe Bilddaten mit
CanvasContext2D#getImageData()
erhalten, über jedes Pixel iterieren und die sichtbare Hintergrundfarbe (8-Bit-Integer) gegen die gewünschte austauschen. Speichern Sie geänderte Bilddaten auf einer Offscreen-Leinwand und lesen Sie sie mitCanvas#toDataURL()
zurück. Könnte funktionieren :)Übrigens. Die Hintergrundfarbe wird angewendet, wenn die Leinwand gelöscht wird, also nur beim Initialisieren oder wenn Sie
SignaturePad#clear()
explizit aufrufen.