java截图工具源代码 java截屏代码

Java如何实现截图功能

下面给你介绍将全屏幕截图保存到指定目录下的代码,希望能对你有帮助:

创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站设计、成都网站制作、兴业网络推广、小程序设计、兴业网络营销、兴业企业策划、兴业品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供兴业建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

核心代码为:snapShot方法中的相关逻辑

package Jietu;

import java.awt.Dimension;

import java.awt.Rectangle;

import java.awt.Robot;

import java.awt.Toolkit;

import java.awt.image.BufferedImage;

import java.io.File;

import javax.imageio.ImageIO;

public class CameraTest {

private String filePreStr; // 默认前缀(选择存储路径例如: D:\\)

private String defName = "cameraImg"; // 默认截图名称

static int serialNum = 0; //截图名称后面的数字累加

private String imageFormat; // 图像文件的格式

private String defaultImageFormat = "png"; //截图后缀

Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); //获取全屏幕的宽高尺寸等数据

public CameraTest() {

filePreStr = defName;

imageFormat = defaultImageFormat;

}

public CameraTest(String s, String format) {

filePreStr = s;

imageFormat = format;

}

public void snapShot() {

try {

// *** 核心代码 *** 拷贝屏幕到一个BufferedImage对象screenshot

BufferedImage screenshot = (new Robot()).createScreenCapture(new Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));

serialNum++;

// 根据文件前缀变量和文件格式变量,自动生成文件名

String name = filePreStr + String.valueOf(serialNum) + "." + imageFormat;

File f = new File(name);

System.out.print("Save File " + name);

// 将screenshot对象写入图像文件

ImageIO.write(screenshot, imageFormat, f);

System.out.print("..Finished!\n");

} catch (Exception ex) {

System.out.println(ex);

}

}

// 运行之后,即可将全屏幕截图保存到指定的目录下面br // 配合前端页面上面的选择尺寸等逻辑,传到后台,即可实现自由选择截图区域和大小的截图br

public static void main(String[] args) {

CameraTest cam = new CameraTest("d:\\Hello", "png");//

cam.snapShot();

}

}

java 怎么实现网页截图

事实上,如果您想以Java实现网页截图,也就是“输入一段网址,几秒钟过后就能截取一张网页缩略图”的效果。那么,您至少有3种方式可以选择。

1、最直接的方式——使用Robot

方法详解:该方法利用Robat提供的强大桌面操作能力,硬性调用浏览器打开指定网页,并将网页信息保存到本地。

优势:简单易用,不需要任何第三方插件。

缺点:不能同时处理大量数据,技术含量过低,属于应急型技巧。

实现方法:使用如下代码即可。

[java] view plaincopy

public static void main(String[] args) throws MalformedURLException,  

IOException, URISyntaxException, AWTException {  

//此方法仅适用于JdK1.6及以上版本  

Desktop.getDesktop().browse(  

new URL("").toURI());  

Robot robot = new Robot();  

robot.delay(10000);  

Dimension d = new Dimension(Toolkit.getDefaultToolkit().getScreenSize());  

int width = (int) d.getWidth();  

int height = (int) d.getHeight();  

//最大化浏览器  

robot.keyRelease(KeyEvent.VK_F11);  

robot.delay(2000);  

Image image = robot.createScreenCapture(new Rectangle(0, 0, width,  

height));  

BufferedImage bi = new BufferedImage(width, height,  

BufferedImage.TYPE_INT_RGB);  

Graphics g = bi.createGraphics();  

g.drawImage(image, 0, 0, width, height, null);  

//保存图片  

ImageIO.write(bi, "jpg", new File("google.jpg"));  

}

2、最常规的方式——利用JNI,调用第三方C/C++组件

方法详解:目前来讲,Java领域对于网页截图组件的开发明显不足(商机?),当您需要完成此种操作时,算得上碰到了Java的软肋。但是,众所周知Java也拥有强大的JNI能力,可以轻易将C/C++开发的同类组件引为己用。不懂可以扣五七八零二四一四四

优势:实现简单,只需要封装对应的DLL文件,就可以让Java实现同类功能。

劣势:同其他JNI实现一样,在跨平台时存在隐患,而且您的程序将不再属于纯Java应用。

实现方法:可参见此用例,具体封装何种C/C++组件请自行选择。

PS:示例来源于ACA HTML to Image Converter项目( ),这是一个收费的HTML转Image第三方组件,但封装方式在Java中大同小异。

引用JNI封装:

[java] view plaincopy

import sun.awt.*;  

import java.awt.*;  

import javax.swing.*;  

import java.awt.event.*;  

import java.awt.*;  

import java.awt.peer.*;  

public class Snap  

{  

static  

{  

System.loadLibrary("Snap");  

}  

public static void main( String[] argv )  

{  

Snap t_xSnap = new Snap();  

t_xSnap.Start("", "snapshot-google.png");  

}  

public native void Start(String pi_strURL, String pi_strImageName);  

}  

CPP部分的实现:

[java] view plaincopy

#include windows.h  

#include atlbase.h  

#include "snap.h"  

#pragma comment(lib,"atl.lib")  

#import "./../../acawebthumb.dll" no_namespace  

JNIEXPORT void JNICALL Java_Snap_Start(JNIEnv *pEnv, jobject, jstring pi_strUrl, jstring pi_strFileName)  

{  

CoInitialize(0);  

_bstr_t t_strUrl = pEnv-GetStringUTFChars(pi_strUrl, 0);  

_bstr_t t_strFileName = pEnv-GetStringUTFChars(pi_strFileName, 0);      

IThumbMakerPtr HTML_Converter = NULL;  

HRESULT hr = HTML_Converter.CreateInstance(L"ACAWebThumb.ThumbMaker");      

if (SUCCEEDED(hr))  

{   

HTML_Converter-SetURL(t_strUrl);  

if ( 0 == HTML_Converter-StartSnap() )  

HTML_Converter-SaveImage(t_strFileName);  

}  

if (HTML_Converter)  

HTML_Converter.Release();  

CoUninitialize();           

}

以该组件图像化yahoo界面的效果图:

3、最扎实的方法——自行解析HTML标记,并将其图像化

方法详解:众所周知,HTML之所以在浏览器中以具体的网页格式出现,并非服务器端传了一整个应用到客户端,而是源自于浏览器对于客户端自行解析的结果。因此,只要我们将对应的解析一一实现,那么将网页图形化,就将不是什么难事。

优势:纯Java实现,一劳永逸,一旦开发完成则永远通用,而且有一定的商用价值。

劣势:开发费时,且需要针对不同语法做精确分析,才能保证输出的基本正确。尤其在涉及到JavaScript解析时,难度将尤其增大。

实现方法:目前尚无具体案例可供参考。但是,由于Java有jdic之类的浏览器项目存在(),而Java图形界面又属绘制生成。从理论上说,我们可以将所有具备Graphics的组件图形化保存。

而如果自行解析,那么您需要建立HTML解析器(或使用第三方的,万幸Java在这方面的组件很多),了解Java2D机制,了解何时该使用drawString绘制文字,何时又该使用drawImage插入图片等等。

谢谢采纳!

哪里有JAVA写的类似QQ截图工具的源代码?

不能立即给你提供源码 但是可以教给你怎么实现。

首先 你要截屏 肯定要在属于用鼠标圈定一个区域来截取这个区域。

你可以这样:

先截取当前屏幕的满屏图片:new robot().createScreenCapture(r) 这个是截屏代码 r是Rectangle类型 代表要截取的区域。

然后用 JDialog 做一个无控制条的窗口,大小设置成满屏,把截取的这个满屏的图片贴到这个 JDiaglog 里

然后做一下鼠标圈定区域,这个很简单 不详细说了, 最后对你圈定的这个区域再做一次截屏,这个不就是你要的截图了。,。 最后别忘了 截屏完毕后 关闭JDialog

你要是觉得这样做麻烦,也没别的办法。 反正我很明白 QQ的截屏也是这样做的


分享文章:java截图工具源代码 java截屏代码
转载来源:http://ybzwz.com/article/doeodjp.html