Как избежать половины картинки при создании живого скриншота? - PullRequest
0 голосов
/ 17 февраля 2020

Я создал приложение Visual Basi c. NET, которое делает снимок экрана каждую секунду и сохраняет его в файл screenshot.jpg И я также создал сервер, который обслуживает файл screenshot.jpg каждую секунду. Но проблема в том, что иногда я вижу половину картинки (возможно, потому что она еще не закончила рисовать). Есть ли способ обойти эту проблему? Интересно, как веб-камеры предлагают этот гладкий поток? Означает ли это, что моя программа захвата скриншотов работает слишком медленно?

enter image description here

Вот мое приложение

' Take screenshot every second
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Dim bmp As Bitmap = ScreenCap()

    bmp.Save(Application.StartupPath & "\screenshot.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
    bmp.Dispose()
End Sub

Вы можете увидеть полный проект на Github: https://git.io/Jv4TL

А вот код переднего конца

<html>
<body>
    <img class="screenshot" src="screenshot.jpg">

    <script>
        setInterval(() => {
            document.querySelector('.screenshot').src =
                'screenshot.jpg?id=' + Math.random(0, 1000)
        }, 1000)
    </script>
</body>
</html>
...