Как сохранить снимок экрана рабочего стола клиента в базе данных, используя JavaScript и C# - PullRequest
0 голосов
/ 03 августа 2020

Я хочу снимать скриншот рабочего стола клиента каждую минуту с помощью кода Javascript и сохранять его в базе данных, используя C#. После нескольких дней поиска я получил приведенный ниже код с веб-сайта. Теперь я могу сохранить изображение в базе данных, используя C# Asp. net (веб-формы). Примечание: я пробовал метод graphics.copyfromscreen, но он не работает в IIS .

<script type="text/javascript">
        var canIRun = navigator.mediaDevices.getDisplayMedia;

        var takeScreenShot = async; () => {
            var stream = await; navigator.mediaDevices.getDisplayMedia({
                video: { mediaSource: 'screen' },
            });
            // get correct video track
            var track = stream.getVideoTracks()[0];
            // init Image Capture and not Video stream
            var imageCapture = new ImageCapture(track);
            // take first frame only
            var bitmap = await; imageCapture.grabFrame();

            // destory video track to prevent more recording / mem leak
            track.stop();

            var canvas = document.getElementById('fake');
            // this could be a document.createElement('canvas') if you want
            // draw weird image type to canvas so we can get a useful image
            canvas.width = bitmap.width;
            canvas.height = bitmap.height;
            var context = canvas.getContext('2d');
            context.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height);
            var image = canvas.toDataURL();

            // this turns the base 64 string to a [File] object
            var res = await; fetch(image);
            var buff = await; res.arrayBuffer();
            //   mm.src = buff;
            //   document.getElementById("<%=hf1.ClientID%>").value = mm.src;
             // clone so we can rename, and put into array for easy proccessing
             var file = [
               new File([buff], `photo_${new Date()}.jpg`, {
                   type: 'image/jpeg',
               }),
             ]
             document.getElementById("<%=hf1.ClientID%>").value = file;
             return file;
         };

         (function () {
             var button = document.getElementById('cake').onclick = () => canIRun ? takeScreenShot() : {};
         })
    </script>

<button id="cake">Take Screeny</button>
<br />
<canvas id="fake"></canvas>
...