рдирдорд╕реНрддреЗ рдЬрдм рдореИрдВ рдЗрд╕ рднрдпрд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдХреЗ рдХреИрдирд╡рд╛рд╕ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .fromDataURL() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рд╕рд╣реА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдХрд╛рд░ рдХрд╛ 1/4 рд╣реЛрддрд╛ рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреИрдирд╡рд╛рд╕ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддрд╛ рд╣реВрдВред
рдХреНрдпрд╛ рдпрд╣ рдореЗрд░реЗ рддрд░реНрдХ рдореЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рджреЗрдЦрд╛ рд╣реИ?
рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдЗрд╕реЗ рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИред рдбрд┐рд╡рд╛рдЗрд╕ рдкрд┐рдХреНрд╕реЗрд▓ рдЕрдиреБрдкрд╛рдд рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИред
рдЕрднреА рднреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ :(
рдХреНрдпрд╛ рдЖрдк рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (1.3.4) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? 1.3.3 рдХреЛ fromDataURL
рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдерд╛ рдЬрдм window.devicePixelRatio
рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ (рдЙрдореНрдореАрдж рд╣реИ) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 1.3.4 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдореИрдВ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЬрдм рдореИрдВ рдЕрдиреБрдкрд╛рдд рдХреЛ рдареАрдХ рд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реВрдВ (рдЖрдкрдХреЗ рдбреЗрдореЛ рдХреА рддрд░рд╣), рдореЗрд░реА рдЙрдВрдЧрд▓реА рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рдЬрд╣рд╛рдВ рд░реЗрдЦрд╛ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИред
рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбреЗрдореЛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдЦреЗрд▓реЗрдВрдЧреЗред
рдпрд╣рд╛рдБ рдПрдХ рд╕рд░рд▓ рдбреЗрдореЛ рд╣реИ: http://jsfiddle.net/szimek/baL7r8xdред рдЬрдм рдЖрдк "рдмрджрд▓реЗрдВ" рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреИрдирд╡рд╛рд╕ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░ рджреЗрдЧрд╛ рдФрд░ рдЫрд╡рд┐ рдХреЛ 1 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╡рд╛рдкрд╕ рд░рдЦ рджреЗрдЧрд╛ред рдпрд╣ рдЖрдИрдлреЛрди рдкрд░ window.devicePixelRatio
2 рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрдЬреАрдм, рдореЗрд░реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЗрд╕реЗ рд╕рдордЭ рд▓реВрдВрдЧрд╛ :)
рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдбреЗрдЯрд╛ рдбрд╛рд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, .fromDataURL(data)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдк рдХреИрдирд╡рд╛рд╕ рдХреЛ рдареАрдХ рд╕реЗ рд╕реНрдХреЗрд▓ рдХрд░рддреЗ рд╣реИрдВ:
function resizeCanvas(canvas) {
var ratio = window.devicePixelRatio || 1;
canvas.width = canvas.offsetWidth * ratio;
canvas.height = canvas.offsetHeight * ratio;
canvas.getContext('2d').scale(ratio, ratio);
}
resizeCanvas(canvas);
рд╕рдорд╛рди рдЫрд╡рд┐ рдЖрдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
signaturePad.fromDataURL(data, {width: 100, height: 100})
рдЪреМрдбрд╝рд╛рдИ, рдКрдВрдЪрд╛рдИ рдХреИрдирд╡рд╛рд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА:
https://github.com/szimek/signature_pad/blob/master/src/signature_pad.ts
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╕рдорд╛рди рдЫрд╡рд┐ рдЖрдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
signaturePad.fromDataURL(data, {width: 100, height: 100})
рдЪреМрдбрд╝рд╛рдИ, рдКрдВрдЪрд╛рдИ рдХреИрдирд╡рд╛рд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА:
https://github.com/szimek/signature_pad/blob/master/src/signature_pad.ts