Signature_pad: рд╕рд░реНрд╡рд░ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЫрд╡рд┐ рд╕рд╣реЗрдЬреЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдЬреВрди 2016  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: szimek/signature_pad

рдирдорд╕реНрддреЗ, рдореИрдВ рдПрдХ рд╕рд░реНрд╡рд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдкреАрдПрдирдЬреА рдЫрд╡рд┐ рдХреА рддрд░рд╣ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рдореИрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ PHP рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)ред

рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдирдорд╕реНрддреЗ @stupendomen

рдореИрдВ рдкрд┐рдЫрд▓реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ .php рдлрд╝рд╛рдЗрд▓ (signature_pad.php) рдмрдирд╛рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ AJAX рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреИрдб рд╣реЛрддрд╛ рд╣реИ (рдЬрдм рдЖрдк рд╕реЗрд╡ рдмрдЯрди рдЦреАрдВрдЪрддреЗ рд╣реИрдВ)ред
рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

`
рд╡рд░ рдЖрд╡рд░рдг = document.getElementById ("рд╣рд╕реНрддрд╛рдХреНрд╖рд░-рдкреИрдб"),
ClearButton = wrapper.querySelector ("[рдбреЗрдЯрд╛-рдПрдХреНрд╢рди = рдХреНрд▓рд┐рдпрд░]"),
рд╕реЗрд╡рдмрдЯрди = рд░реИрдкрд░.рдХреНрд╡реЗрд░реА рдЪрдпрдирдХрд░реНрддрд╛ ("[рдбреЗрдЯрд╛-рдПрдХреНрд╢рди = рд╕реЗрд╡]"),
рдХреИрдирд╡рд╛рд╕ = рд░реИрдкрд░.рдХреНрд╡реЗрд░реА рдЪрдпрдирдХрд░реНрддрд╛ ("рдХреИрдирд╡рд╛рд╕"),
рд╕рд┐рдЧреНрдиреЗрдЪрд░рдкреИрдб;

// Adjust canvas coordinate space taking into account pixel ratio,
// to make it look crisp on mobile devices.
// This also causes canvas to be cleared.
    function resizeCanvas() {
        // When zoomed out to less than 100%, for some very strange reason,
        // some browsers report devicePixelRatio as less than 1
         // and only part of the canvas is cleared then.
        var ratio =  Math.max(window.devicePixelRatio || 1, 1);
        canvas.width = canvas.offsetWidth * ratio;
        canvas.height = canvas.offsetHeight * ratio;
        canvas.getContext("2d").scale(ratio, ratio);
    }
    window.onresize = resizeCanvas;
    resizeCanvas();
    signaturePad = new SignaturePad(canvas);

    clearButton.addEventListener("click", function (event) {
         signaturePad.clear();
    });

    saveButton.addEventListener("click", function (event) {
        event.preventDefault();
        var nombre_receptor_form = $("#nombre_receptor_form").val();
        var id_nombre_imagen = $("#id_nombre_imagen").val();

        if ( signaturePad.isEmpty() ) {
            alert("Please insert signature.");
        } else {
            var dataUrl = signaturePad.toDataURL();
            document.getElementById('imagen_firma').src = dataUrl;
            var imagen = dataUrl.replace(/^data:image\/(png|jpg);base64,/, "");
                $.ajax({
                    url: './includes/signature_pad.php',
                    type: 'POST',
                    data: {
                        imageData: imagen
                    },
                })
                .done(function(msg) {
                    // Image saved successfuly.
                    console.log("success: " + msg);
                    document.getElementById("my_form").submit(); //I do this to save other information.
                })
                .fail(function(msg) {
                    console.log("error: " + msg);
                });

`

рдореЗрд░реА рдЗрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛!

рд╕рднреА 11 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛:

if (isset($_POST['imageData'])) {
    $imgData = base64_decode($_POST['imageData']);
    $image_name= $_POST['image_name'];

    // Path where the image is going to be saved
    $filePath = '../img/'.$image_name.'.jpg';

    // Delete previously uploaded image
    if (file_exists($filePath)) { unlink($filePath); }

    // Write $imgData into the image file
    $file = fopen($filePath, 'w');
    fwrite($file, $imgData);
    fclose($file);
} else {
    echo "imgData doesn't exists";
}

рдирдорд╕реНрддреЗ,
рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдкрдХрд╛ рдХреЛрдб рдХрд╣рд╛рдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рдирдорд╕реНрддреЗ @stupendomen

рдореИрдВ рдкрд┐рдЫрд▓реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ .php рдлрд╝рд╛рдЗрд▓ (signature_pad.php) рдмрдирд╛рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ AJAX рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреИрдб рд╣реЛрддрд╛ рд╣реИ (рдЬрдм рдЖрдк рд╕реЗрд╡ рдмрдЯрди рдЦреАрдВрдЪрддреЗ рд╣реИрдВ)ред
рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

`
рд╡рд░ рдЖрд╡рд░рдг = document.getElementById ("рд╣рд╕реНрддрд╛рдХреНрд╖рд░-рдкреИрдб"),
ClearButton = wrapper.querySelector ("[рдбреЗрдЯрд╛-рдПрдХреНрд╢рди = рдХреНрд▓рд┐рдпрд░]"),
рд╕реЗрд╡рдмрдЯрди = рд░реИрдкрд░.рдХреНрд╡реЗрд░реА рдЪрдпрдирдХрд░реНрддрд╛ ("[рдбреЗрдЯрд╛-рдПрдХреНрд╢рди = рд╕реЗрд╡]"),
рдХреИрдирд╡рд╛рд╕ = рд░реИрдкрд░.рдХреНрд╡реЗрд░реА рдЪрдпрдирдХрд░реНрддрд╛ ("рдХреИрдирд╡рд╛рд╕"),
рд╕рд┐рдЧреНрдиреЗрдЪрд░рдкреИрдб;

// Adjust canvas coordinate space taking into account pixel ratio,
// to make it look crisp on mobile devices.
// This also causes canvas to be cleared.
    function resizeCanvas() {
        // When zoomed out to less than 100%, for some very strange reason,
        // some browsers report devicePixelRatio as less than 1
         // and only part of the canvas is cleared then.
        var ratio =  Math.max(window.devicePixelRatio || 1, 1);
        canvas.width = canvas.offsetWidth * ratio;
        canvas.height = canvas.offsetHeight * ratio;
        canvas.getContext("2d").scale(ratio, ratio);
    }
    window.onresize = resizeCanvas;
    resizeCanvas();
    signaturePad = new SignaturePad(canvas);

    clearButton.addEventListener("click", function (event) {
         signaturePad.clear();
    });

    saveButton.addEventListener("click", function (event) {
        event.preventDefault();
        var nombre_receptor_form = $("#nombre_receptor_form").val();
        var id_nombre_imagen = $("#id_nombre_imagen").val();

        if ( signaturePad.isEmpty() ) {
            alert("Please insert signature.");
        } else {
            var dataUrl = signaturePad.toDataURL();
            document.getElementById('imagen_firma').src = dataUrl;
            var imagen = dataUrl.replace(/^data:image\/(png|jpg);base64,/, "");
                $.ajax({
                    url: './includes/signature_pad.php',
                    type: 'POST',
                    data: {
                        imageData: imagen
                    },
                })
                .done(function(msg) {
                    // Image saved successfuly.
                    console.log("success: " + msg);
                    document.getElementById("my_form").submit(); //I do this to save other information.
                })
                .fail(function(msg) {
                    console.log("error: " + msg);
                });

`

рдореЗрд░реА рдЗрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛!

рдЙрддреНрддрдо!
рдзрдиреНрдпрд╡рд╛рдж

@davidosuna1987 рдпреЗ рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдХрд╣рд╛рдБ рд╕реЗ рдЖ рд░рд╣реА рд╣реИрдВ?
рд╡рд░ form_receiver_name = $("#form_receiver_name").val();
var id_image_name = $("#id_image_name").val();

@davidosuna1987 @stupendomen рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИ! рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдХреЙрдкреА рдХрд┐рдпрд╛ рд╣реИ рдФрд░ dbconenct.php рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рд╛ рд╣реИ рдФрд░ рдЕрднреА рддрдХ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рдХреГрдкрдпрд╛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдорджрдж рдХрд░реЗрдВ

рдХреНрдпрд╛ рдЖрдк рдкреВрд░рд╛ рдХреЛрдб рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреГрдкрдпрд╛

рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рдзрдиреНрдпрд╡рд╛рджред рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА !

рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

@davidosuna1987
рдЕрдЪреНрдЫрд╛, рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд╕рд┐рдЧреНрдиреЗрдЪрд░рдкреИрдб рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдпрд╛ рдкреБрд░рд╛рдиреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред
рдХреНрдпрд╛ рдХреЛрдИ PHP рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ?

рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕