Рисование изображения на холсте из видео -> сохранить холст как файл (возвращает черное изображение) - PullRequest
0 голосов
/ 12 февраля 2019

Мне нужно захватить кадр из видео, которое я только что загрузил с помощью fileupload, который я создаю с помощью canvas, и нарисовать на нем кадр из видео ->

Я могу сохранить изображение, используяAJAX вызов PHP-скрипта.Но он полностью черный, вот мой код:

JS:

 var $theImg = $('<video id="video" preload="metadata" src="http://localhost/screens/page/VIDEO/vids/'+file.name+'"></video>');
                        $theImg.attr('data-disp', name);
                        $theImg.attr('data-name', file.name);
                        $theImg.attr('data-created', 1);
                        $theImg.appendTo('#selectable-videos');
                        $theImg.addClass('selectable-image');
                        $(e.target).parent().parent().find('.modal-body').children().append($theImg);
                    ///////////////////////////////////////////////////////////////////////////////////////////////
                    var $canvas = $('<canvas id="canvas" width="192" height="108"></canvas>');
                    $theImg.append($canvas);

                    var video = $('#video');
                    var canvas = $('#canvas');

                    if(video.length){
                        var ctx = canvas[0].getContext('2d').drawImage($theImg.get(0), 0, 0, canvas.width, canvas.height);

                        var dataURL = canvas[0].toDataURL('image/png');

                        $.ajax({
                            url: "../admin/php/folder.php",
                            timeout: 5000,
                            method: "POST",
                            data: { data: dataURL, DISPLAYNAME: fullName, ACTUALNAME: name, FILE_TYPE: 'poster', action: "save-poster" },
                            success: function(data) {
                                console.log("poster created.");
                            }
                        });
                    }

PHP:

if($_POST["action"] == "save-poster"){
            define('UPLOAD_DIR', '../../page/VIDEO/vids/');
            $img = $_POST['data'];
            $img = str_replace('data:image/png;base64,', '', $img);
            $img = str_replace(' ', '+', $img);
            $data = base64_decode($img);
            $file = UPLOAD_DIR . uniqid() . '.png';
            $success = file_put_contents($file, $data);
        }

Есть идеи, почему он сохраняет полностью черный?Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...