捕获当前屏幕图像
need to be optimized. relate 使用JFreeChart创建图象
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
class ImageCanvas extends Canvas{
private Image image;
private Dimension prefSize;
public ImageCanvas(Image image){
this.image = image;
calculatePreferredSize();
}
public void setImage(Image image){
this.image = image;
calculatePreferredSize();
repaint();
}
private void calculatePreferredSize(){
prefSize = new Dimension(image.getWidth(this),image.getHeight(this));
System.out.println(image.getWidth(this));
setSize(prefSize);
}
public Dimension getPreferredSize() {
return prefSize;
}
public Dimension getMinimumSize() {
return prefSize;
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
g.drawImage(image,0,0,null);
}
}
class ImageUtils{
public static Image getScreenImage(){
Robot robot;
try {
robot = new Robot();
}catch(Exception e) {
throw new RuntimeException("unable to construct Robot");
}
Dimension screenDims =Toolkit.getDefaultToolkit().getScreenSize();
Image screen =robot.createScreenCapture(new Rectangle(450,350,screenDims.width,screenDims.height)).getScaledInstance(400,300,Image.SCALE_SMOOTH);
MediaTracker tracker =new MediaTracker(new Label());
tracker.addImage(screen,1);
try {
tracker.waitForID(0);
}catch(InterruptedException e) { /** ... */ }
return screen;
}
}
public class ScreenCapture extends Frame{
private ImageCanvas canvas =new ImageCanvas(ImageUtils.getScreenImage());
public ScreenCapture(){
add(canvas);
setSize(400,300);
setVisible(true);
Thread imageThread =new UpdateThread();
imageThread.setDaemon(true);
imageThread.start();
}
class UpdateThread extends Thread{
public void run(){
while(true){
try {
Thread.currentThread().sleep(1000);
}
catch (Exception ex) {
}
canvas.setImage(ImageUtils.getScreenImage());
validate();
}
}
}
public static void main(String[] args){
new ScreenCapture();
}
}
分享到:
相关推荐
总的来说,捕获当前屏幕并保存为BMP格式图片的实现涉及了Windows API和GDI的基本使用,对于Windows平台上的软件开发人员来说,理解并掌握这些知识是至关重要的。通过这样的实践,开发者可以进一步提升对系统级编程和...
描述中提到,“c#写的屏幕捕获程序,可以捕获当前屏幕图像,使用vs2008编写,调试通过。”这表明这个程序是用C#编程语言开发的,开发环境为Visual Studio 2008。C#是一种面向对象的、类型安全的编程语言,它与.NET ...
在IT行业中,截取屏幕图像是一项常见的任务,无论是为了演示、教学、问题记录还是其他目的。在Windows操作系统中,用户通常可以通过按下键盘上的`PrintScreen`(或`PrtScn`、`Prt Scr`)键来捕获整个屏幕的图像。...
Print Screen键,简称PrtSc或PrtScn,是键盘上一个用于捕获当前屏幕图像的快捷方式,通常用于保存或分享屏幕上的信息。然而,有时我们可能希望自定义截图功能,满足特定的需求,比如添加额外的编辑功能、个性化设置...
在Android系统中,截取当前屏幕图像是一项常见的需求,无论是为了调试、测试还是用户分享功能。这个过程涉及到Android系统的视图层次结构、渲染机制以及权限管理。以下将详细讲解如何在Android中实现屏幕截图功能。 ...
这可能涉及到捕获当前屏幕图像、设置一个新的桌面壁纸或显示一个不可见的覆盖层,以及在解锁时恢复原始状态。 2. **限制和屏蔽任务栏**:在屏幕锁定期间,通常需要禁用某些操作,如任务栏的使用,以防止用户通过...
MATLAB提供了一个名为`getframe`的内置函数,用于捕获当前图形窗口的一部分或全部为视频帧或图像。这个函数能够帮助我们获取到GUI组件的图像数据。例如,如果你有一个GUI组件的句柄`hFigure`,你可以这样使用`...
"截取当前屏幕图像"是操作系统和各种应用程序提供的一个基本功能,允许用户轻松捕获屏幕上的任何可见信息。在本文中,我们将深入探讨如何在不同的操作系统和设备上进行屏幕截图,以及相关的工具和技术。 1. Windows...
截图,即屏幕快照,是计算机用户捕获当前屏幕图像的一种方式。通常,用户可以通过系统自带的快捷键(如Windows系统中的PrtScn或Alt+PrtScn)或第三方软件来实现。"不错的截图软件"在此基础上提供了更丰富的功能和...
屏幕捕获软件是一种用于在计算机上记录和保存屏幕图像的工具,它可以帮助用户方便地捕捉和分享屏幕上的任何内容。"红蜻蜓"是其中一款知名的屏幕捕获软件,提供了丰富的截图功能,满足用户在不同场景下的需求。 一、...
然后在程序中,创建一个Graphics对象,通过GetDC()获取屏幕的设备上下文,调用BitBlt()函数复制屏幕图像,最后释放资源。捕获的图像可以保存为图片文件,例如JPEG或PNG格式,这可以通过Bitmap对象的Save()方法实现。...
1. 屏幕截图函数:获取当前屏幕的图像数据。 2. 数据编码函数:将图像数据转换为适合网络传输的格式。 3. 数据解码函数:在接收端将接收到的字节流恢复为原始图像数据。 4. 客户端和服务器端的Socket通信逻辑:建立...
屏幕截图是计算机应用中常见的一种功能,用于捕获当前显示器上的视觉信息并将其保存为图像文件。在本案例中,我们关注的是如何生成BMP(Bitmap)格式的图像,这是一种未经压缩的位图文件格式,广泛应用于各种操作...
在Windows系统中,可以通过快捷键"Print Screen"(PrtScn)来捕获整个屏幕,而"Alt + Print Screen"则会捕获当前活动窗口。 除了系统自带的截图功能,还有许多第三方软件提供更高级的捕屏选项。比如,描述中提到的...
本文将深入探讨“截屏录像,对当前屏幕连续捕获工具”的相关知识点,包括其工作原理、常见功能、使用场景及重要性。 一、工作原理 截屏录像工具的工作原理主要是通过持续捕获电脑屏幕的帧率变化,记录下每一帧的...
- **捕获模块**:利用GPU或CPU捕获当前屏幕图像,并将其转换为图片文件。 - **处理模块**:根据用户设定的参数(如分辨率、质量等)对截图进行处理。 - **存储模块**:将处理后的截图保存到本地存储,并记录元数据。...
游戏截图,顾名思义,是在游戏运行过程中捕获当前屏幕图像的过程。这些截图通常用于分享游戏体验、记录成就、或者作为攻略、评测的配图。游戏截图软件相比于系统自带的截图工具,往往拥有更多特色功能,如快捷键设定...
获得屏幕属性,如果屏幕对象有调色板则获得屏幕调色板,将新建立的调色板选如建立的内存绘图句柄中,Capturescreen函数捕捉整个屏幕图像,CaptureActiveWindow函数捕获当前活动窗口,返回值--返回一个活动窗口尺寸的...
"完整版返回服务端当前屏幕抓图"这一主题涉及到客户端与服务端之间的通信,以及如何在服务端获取并处理客户端的屏幕图像数据。下面我们将深入探讨这个话题。 首先,我们需要了解客户端和服务端的概念。客户端通常是...