Как получить снимок экрана в.NET от webapplication?

В Java мы можем сделать это следующим образом:

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;

...

public void captureScreen(String fileName) throws Exception {

   Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
   Rectangle screenRectangle = new Rectangle(screenSize);
   Robot robot = new Robot();
   BufferedImage image = robot.createScreenCapture(screenRectangle);
   ImageIO.write(image, "png", new File(fileName));

}

...

Как мы делаем это в.NET от webapplication? Получение экрана клиента и отправка его к серверу все из приложения.

8
задан Lars Truijens 26 May 2010 в 19:51
поделиться

4 ответа

Графический объект .NET имеет метод CopyFromScreen (), который захватывает прямоугольную область экрана и копирует ее в растровое изображение. Наилучший способ сделать это аналогично следующему:

public void CaptureImage(Point SourcePoint, Point DestinationPoint, Rectangle Selection, string FilePath)
{
    using (Bitmap bitmap = new Bitmap(Selection.Width, Selection.Height)) {
        using (Graphics g = Graphics.FromImage(bitmap)) {
            g.CopyFromScreen(SourcePoint,DestinationPoint, Selection.Size);
        }
        bitmap.Save(FilePath, ImageFormat.Bmp);
    }
}
6
ответ дан 5 December 2019 в 14:00
поделиться
1
ответ дан 5 December 2019 в 14:00
поделиться

Нет, это невозможно сделать, используя только html или javascript. У них просто нет методов для этого. Возможная причина может заключаться в том, что это будет угроза безопасности, как указывает Джон Сондерс. Веб-приложения могут фиксировать все, что происходит на экране пользователя, даже не зная об этом.

Код на стороне сервера, как вы показали, не работает, так как он выполняется на стороне сервера. Sliverlight или форма ActiveX могут работать, но это не вариант, поскольку вы хотите, чтобы они работали во всех браузерах на всех платформах.

править

icemanind сообщает нам , что можно использовать Silverlight , но вы не можете захватить весь экран. Наверное, из соображений безопасности.

4
ответ дан 5 December 2019 в 14:00
поделиться

Это невозможно ни в базовом веб-приложении, ни в Silverlight.

Я также сильно подозреваю, что класс Robot в Java не позволяет делать снимки экрана при запуске в качестве апплета браузера, иначе это была бы одна из самых больших дыр в безопасности, когда-либо найденных в Java, если бы базовое веб-приложение с пиксельным java-апплетом могло транслировать видео с моего рабочего стола через интернет обратно на сервер.

Давайте сделаем один шаг назад и спросим следующее: Чего вы пытаетесь достичь? Зачем вы хотите сделать снимок экрана?

.
1
ответ дан 5 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: