За последние 24 часа нас посетили 22962 программиста и 1724 робота. Сейчас ищут 1792 программиста ...

Сохранить canvas на сервере

Тема в разделе "Сделайте за меня", создана пользователем Kongrig, 1 май 2020.

Метки:
  1. Kongrig

    Kongrig Новичок

    С нами с:
    1 май 2020
    Сообщения:
    1
    Симпатии:
    0
    Доброго времени! Достатка и здоровья!
    Необходима помощь найти ошибку или предложить свой вариант:
    1. на сайте https://operatortko.ru/test2/ созданы два файла
    index.html
    HTML:
    1. <html lang="en" dir="ltr" xmlns:fb="http://ogp.me/ns/fb#">
    2.     <meta charset="utf-8" />
    3.     <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    4.     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    5.     <script>
    6.  
    7.         // Put event listeners into place
    8.         window.addEventListener("DOMContentLoaded", function() {
    9.             // Grab elements, create settings, etc.
    10.             var canvas = document.getElementById('canvas');
    11.             var context = canvas.getContext('2d');
    12.             var video = document.getElementById('video');
    13.             var mediaConfig =  { video: true };
    14.             var errBack = function(e) {
    15.                 console.log('An error has occurred!', e)
    16.             };
    17.  
    18.             // Put video listeners into place
    19.             if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
    20.                navigator.mediaDevices.getUserMedia(mediaConfig).then(function(stream) {
    21.                    //video.src = window.URL.createObjectURL(stream);
    22.                     video.srcObject = stream;
    23.                     video.play();
    24.                 });
    25.             }
    26.  
    27.             /* Legacy code below! */
    28.             else if(navigator.getUserMedia) { // Standard
    29.                 navigator.getUserMedia(mediaConfig, function(stream) {
    30.                     video.src = stream;
    31.                     video.play();
    32.                 }, errBack);
    33.             } else if(navigator.webkitGetUserMedia) { // WebKit-prefixed
    34.                 navigator.webkitGetUserMedia(mediaConfig, function(stream){
    35.                     video.src = window.webkitURL.createObjectURL(stream);
    36.                     video.play();
    37.                 }, errBack);
    38.             } else if(navigator.mozGetUserMedia) { // Mozilla-prefixed
    39.                 navigator.mozGetUserMedia(mediaConfig, function(stream){
    40.                     video.src = window.URL.createObjectURL(stream);
    41.                     video.play();
    42.                 }, errBack);
    43.             }
    44.  
    45.             // Trigger photo take
    46.             document.getElementById('snap').addEventListener('click', function() {
    47.                 context.drawImage(video, 0, 0, 480, 640);
    48.             });
    49.         }, false);
    50.        
    51.     var sendCanvas = function (cnv) {      
    52.         var img = cnv.toDataURL('image/png').replace('data:image/png;base64,', '');
    53.        
    54.         var sender = newXMLHttpRequest();
    55.         sender.open('POST', 'test.php', true);
    56.         sender.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    57.        
    58.         sender.onreadystatechange = function () {
    59.             if (sender.readyState == 4) {
    60.                 console.log(sender.responseText);
    61.             }
    62.         };
    63.        
    64.         sender.send('img='+img);
    65.     };
    66.  
    67.     </script>
    68.  
    69.  
    70. <!-- <script>
    71.        var ctx = canvas.getContext("2d");
    72. //        ctx.font = "120px Arial";
    73. //        ctx.fillText("\uD83D\uDDFA", 15, 115);
    74.        canvas.onclick = function() {
    75.          var dataURL = canvas.toDataURL("image/jpeg");
    76.          var link = document.createElement("a");
    77.      document.body.appendChild(link); // Firefox requires the link to be in the body :(
    78.      link.href = dataURL;
    79.      link.download = "test.jpg";
    80.      link.click();
    81.      document.body.removeChild(link);
    82.        };
    83.    </script>
    84.  
    85. <script type="application/javascript" language="javascript">
    86. function saveIt()
    87. {
    88.    var myDrawing = document.getElementById("canvas");
    89.    var drawingString = myDrawing.toDataURL("image/jpeg");
    90.    var postData = "canvasData="+drawingString;
    91.    var ajax = new XMLHttpRequest();
    92.    ajax.open("POST",'/convas_save.php',true);
    93.    ajax.setRequestHeader('Content-Type', 'canvas/upload');
    94.    ajax.onreadystatechange=function() {if (ajax.readyState == 4) {alert("SAVE OK");}}
    95.    ajax.send(postData);
    96. }
    97. </script>
    98. -->
    99.  
    100.     <style>
    101.         video { border: 1px solid #ccc; display: block; margin: 0 0 20px 0; }
    102.         #canvas { margin-top: 20px; border: 1px solid #ccc; display: block; }
    103.     </style>
    104. </head>
    105.  
    106.     <!--
    107.        Ideally these elements aren't created until it's confirmed that the
    108.        client supports video/camera, but for the sake of illustrating the
    109.        elements involved, they are created with markup (not JavaScript)
    110.    -->
    111.     <video id="video" width="480" height="640" autoplay></video>
    112.     <button id="snap" class="sexyButton">Сделать фото</button>
    113.     <canvas id="canvas" width="480" height="640"></canvas>
    114.  
    115. <br>
    116. <div>
    117.     <button onClick="saveIt();">Сохранить фото</button>
    118. </div>
    119.  
    120.  
    121. </body>
    122. </html>
    и

    test.php

    PHP:
    1. <?php
    2.     $img = str_replace(' ', '+', $_POST['img']);
    3.     $img = base64_decode($img);
    4.     file_put_contents('img.png', $img);
    5.     echo 'Готово';
    6. ?>
    Помогите найти ошибку, почему canvas не сохраняется на сервере.
    Или предложите свой вариант! Очень надеюсь на помощь!
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Посмотрите в консоль страницы, у меня там полно ошибок, можно начать с их исправления