Я хочу снимать скриншот рабочего стола клиента каждую минуту с помощью кода 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>