RepositoryTypeScriptPLPoland
szimek

szimek/signature_pad

HTML5 canvas based smooth signature drawing

12.1kstars
2.2kforks
4issues
9views

Thành tựu nổi bật

Những danh hiệu mới nhất của dự án

1
TINIX TRENDING·Chủ đề: signature-pad

#1 Repository Của Tuần

3
TINIX TRENDING·Chủ đề: drawing

#3 Repository Của Tuần

3
TINIX TRENDING·Chủ đề: signature

#3 Repository Của Tuần

✍️ Signature Pad — thư viện chữ ký số trên canvas, mượt như vẽ tay thật

Vẽ chữ ký trên web bằng HTML5 canvas, nội suy đường Bézier với độ dày biến thiên theo vận tốc — không phụ thuộc thư viện ngoài, chạy tốt cả desktop lẫn mobile.

Signature Pad của szimek là một thư viện JavaScript/TypeScript gọn nhẹ, dùng để thu nhận chữ ký viết tay ngay trên trình duyệt. Điểm khác biệt cốt lõi nằm ở thuật toán nội suy: thay vì nối các điểm bằng đoạn thẳng, thư viện dựng đường cong Bézier với độ dày nét thay đổi theo vận tốc di chuyển của ngón tay/chuột — lấy cảm hứng từ bài viết "Smoother Signatures" của Square. Kết quả là nét vẽ trông tự nhiên, mượt mà, gần với cảm giác viết trên giấy thật.

✨ Điểm nổi bật

  • Nội suy Bézier biến thiên độ dày: dùng thuật toán từ bài viết của Square để tạo nét vẽ mượt, có độ rộng thay đổi theo tốc độ di chuyển.
  • Thuần HTML5 canvas, zero dependency: không phụ thuộc thư viện ngoài, bundle gọn nhẹ.
  • Hỗ trợ đa nền tảng: chạy ổn định trên mọi trình duyệt desktop và mobile hiện đại.
  • API xuất dữ liệu linh hoạt: toDataURL() xuất PNG/JPEG/SVG, toSVG() trả về chuỗi SVG, toData() trả về mảng point groups để lưu lại hoặc khôi phục.
  • Nhập lại chữ ký: fromDataURL() và fromData() cho phép render lại chữ ký đã lưu lên canvas.
  • Tùy biến nét vẽ: các option như minWidth, maxWidth, throttle, minDistance, velocityFilterWeight, penColor, backgroundColor giúp tinh chỉnh cảm giác viết.
  • Hỗ trợ High DPI: demo đi kèm hướng dẫn xử lý resize và màn hình retina, nét vẽ không bị mờ trên thiết bị có mật độ điểm ảnh cao.
  • Phân phối đa dạng: cung cấp dưới dạng UMD (script tag qua CDN jsDelivr) và ES6 module (npm/yarn).

💡 Vì sao đáng chú ý

Hầu hết các thư viện chữ ký canvas "thế hệ đầu" chỉ nối các điểm bằng lineTo(), kết quả là nét gãy khúc, mất tự nhiên. Signature Pad xử lý đúng bài toán khó hơn: biến chuỗi điểm rời rạc từ touch/mouse event thành đường cong liên tục với độ dày thay đổi theo vận tốc — mô phỏng gần đúng cảm giác bút thật. Tham số velocityFilterWeight kết hợp minWidth/maxWidth cho phép tinh chỉnh "độ nhạy" của nét vẽ, điều mà nhiều thư viện đối thủ bỏ qua.

Với API tối giản (clear(), isEmpty(), off(), on(), redraw()) cùng khả năng xuất SVG giữ nguyên vector, thư viện này phù hợp để tích hợp vào form xác nhận, hợp đồng điện tử, hệ thống giao hàng cần chữ ký người nhận, hay bất kỳ flow nào cần thu nhận chữ ký tay trên web mà không muốn dựa vào thư viện nặng như Fabric.js hay Konva.


#JavaScript #TypeScript #Canvas #Signature #TiniX

Similar Projects

Discover other similar projects and AI models.

RepositoryTypeScript
excalidraw/excalidraw

Virtual whiteboard for sketching hand-drawn like diagrams

134.7k
Oct 28, 2026
RepositoryTypeScript
freeCodeCamp/freeCodeCamp

freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

458.2k
Oct 29, 2026
RepositoryTypeScript
vuejs/vue

This is the repo for Vue 2. For Vue 3, go to https://github.com/vuejs/core

212.6k
Oct 10, 2024
RepositoryPython
practical-tutorials/project-based-learning

Curated list of project-based tutorials

288.4k
Oct 26, 2026
RepositoryJavaScript
react/react

The library for web and native user interfaces.

251.9k
Oct 27, 2026
RepositoryJavaScript
trekhleb/javascript-algorithms

📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings

196.7k
Jul 26, 2026
Repository
getify/You-Dont-Know-JS

A book series (2 published editions) on the JS language.

184.8k
Feb 15, 2026
RepositoryTypeScript
tldraw/tldraw

Build infinite canvas apps in React with the tldraw SDK. World's best, top-most agent recommended #1 five star SDK.

51.1k
Oct 28, 2026
RepositoryJavaScript
mrdoob/three.js

JavaScript 3D Library.

117.2k
Oct 29, 2026