在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));
}
...
我们如何通过Web应用程序在.NET中执行此操作?捕获客户端的屏幕并将其从应用程序内部发送到服务器。
答案 0 :(得分:6)
.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);
}
}
答案 1 :(得分:4)
不,单凭html或javascript无法做到这一点。他们根本没有这样做的方法。可能的原因是John Saunders指出这将是一个安全风险。 Web应用程序可以捕获用户屏幕上发生的任何事情,而无需了解它。
您所显示的服务器端代码不起作用,因为它在服务器端运行。 Sliverlight或ActiveX表单可能有效,但没有选项,因为您希望它可以在所有平台上的所有浏览器上运行。
修改强>
icemanind让我们知道it is possible using Silverlight,但你无法捕获整个屏幕。可能是安全原因。
答案 2 :(得分:1)
答案 3 :(得分:1)
使用基本Web应用程序或Silverlight无法实现这一点。
我也非常怀疑Java中的Robot类在浏览器applet运行时不会让你截取屏幕截图,否则这将成为Java中最大的安全漏洞之一,如果是一个基本的Web应用程序像素大小的Java小程序可以通过互联网将我桌面的实时视频流式传输回服务器。
让我们退后一步,问一下:你想要完成什么?你为什么要截取截图?