Signature_pad: μ„œλ²„ νŒŒμΌμ— 이미지 μ €μž₯

에 λ§Œλ“  2016λ…„ 06μ›” 27일  Β·  11μ½”λ©˜νŠΈ  Β·  좜처: szimek/signature_pad

μ•ˆλ…•ν•˜μ„Έμš”, μ„œλͺ…을 png 이미지와 같은 μ„œλ²„ νŒŒμΌμ— μ €μž₯ν•˜λ €κ³  ν•˜λŠ”λ° μ–΄λ–»κ²Œ ν•΄μ•Ό 할지 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€(λ‚΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ php와 javascriptλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€).

κ°μ‚¬ν•©λ‹ˆλ‹€!

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš” @stupendomen

이전 μ½”λ“œλ‘œ μƒˆ .php 파일(signature_pad.php)을 λ§Œλ“€κ³  μ„œλͺ… νŒ¨λ“œκ°€ ν¬ν•¨λœ νŒŒμΌμ—μ„œ ajax ν•¨μˆ˜λ‘œ ν˜ΈμΆœν•©λ‹ˆλ‹€(μ €μž₯ λ²„νŠΌμ„ λ‹ΉκΈΈ λ•Œ).
이 같은:

`
var 래퍼 = document.getElementById("μ„œλͺ… νŒ¨λ“œ"),
clearButton = wrapper.querySelector("[데이터 μž‘μ—… = μ§€μš°κΈ°]"),
saveButton = wrapper.querySelector("[데이터 μž‘μ—…=μ €μž₯]"),
μΊ”λ²„μŠ€ = 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 ν•¨μˆ˜λ‘œ ν˜ΈμΆœν•©λ‹ˆλ‹€(μ €μž₯ λ²„νŠΌμ„ λ‹ΉκΈΈ λ•Œ).
이 같은:

`
var 래퍼 = document.getElementById("μ„œλͺ… νŒ¨λ“œ"),
clearButton = wrapper.querySelector("[데이터 μž‘μ—… = μ§€μš°κΈ°]"),
saveButton = wrapper.querySelector("[데이터 μž‘μ—…=μ €μž₯]"),
μΊ”λ²„μŠ€ = 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 이 두 쀄은 μ–΄λ””μ„œ λ‚˜μ˜¨ κ±΄κ°€μš”?
var form_receiver_name = $("#form_receiver_name").val();
var id_image_name = $("#id_image_name").val();

@davidosuna1987 @stupendomen λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€! μœ„μ˜ μ½”λ“œλ₯Ό μ •ν™•ν•˜κ²Œ λ³΅μ‚¬ν•˜κ³  dbconenct.php νŒŒμΌμ„ μΆ”κ°€ν–ˆμ§€λ§Œ 이 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 방법을 보여쀄 수 μžˆμŠ΅λ‹ˆκΉŒ? μ΅œλŒ€ν•œ 빨리 λ„μ™€μ£Όμ„Έμš”

전체 μ½”λ“œλ₯Ό κ²Œμ‹œν•  수 μžˆμŠ΅λ‹ˆκΉŒ? 제발

κ°μ‚¬ν•©λ‹ˆλ‹€!

감사 ν•΄μš”. ꡉμž₯히 μœ μš©ν•˜λ‹€ !

κ°μ‚¬ν•©λ‹ˆλ‹€!

@davidosuna1987
μ’‹μŠ΅λ‹ˆλ‹€. κΈ°μ—¬ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ μƒˆ λ²„μ „μ˜ SignaturePadλ‚˜ 이전 λ²„μ „μ—μ„œλŠ” μž‘λ™ν•˜λ„λ‘ λ§Œλ“€ 수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€.
λˆ„κ΅°κ°€ PHPμ—μ„œ μ‚¬μš© 예λ₯Ό 넣을 수 μžˆμŠ΅λ‹ˆκΉŒ?

맀우 κ°μ‚¬ν•©λ‹ˆλ‹€

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰