易截截图软件、单文件、免安装、纯绿色、仅160KB

如何以Java实现网页截图技术

今天看到某网友关于“如何以Java实现网页截图技术”的咨询帖,由于出现该咨询的地点非常不适合较长回复,故以博文形式回答。
事实上,如果您想以Java实现网页截图,也就是“输入一段网址,几秒钟过后就能截取一张网页缩略图”的效果。那么,您至少有3种方式可以选择。
1、最直接的方式——使用Robot
方法详解:该方法利用Robat提供的强大桌面操作能力,硬性调用浏览器打开指定网页,并将网页信息保存到本地。
优势:简单易用,不需要任何第三方插件。
缺点:不能同时处理大量数据,技术含量过低,属于应急型技巧。
实现方法:使用如下代码即可。
public static void main(String[] args) throws MalformedURLException,
IOException, URISyntaxException, AWTException {
//此方法仅适用于JdK1.6及以上版本
Desktop.getDesktop().browse(
new URL("http://google.com/intl/en/").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项目(http://www.acasystems.com/en/web-thumb-activex/faq-con


相关文档:

2010年3月4 6日Java较多

这几天网络有问题,所以今天一起总结出来
类的小结
1,类抽象了所有具有一定共性的实体的共同特称。一个类中,变量用来表示属性,方法用来表示功能,类把数据和对数据的操作封装成一个整体。程序语言中,通过类创建对象。
2,构造函数的作用在于声明类的对象后,为其分配储存单元,即创建实例。
3,不同对象的实例变量将 ......

java多線程的實例

import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.*;
public class ThreadDemo extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public ThreadDemo() {
JButton btn = new JButton("Click me");
btn.addActionL ......

Java文件中为什么会有serialVersionUID


一些java类中为什么需要重载 serialVersionUID 属性。
在Java中,软件的兼
容性是一个大问题,尤其在使用到对象串行性的时候,那么在某一个对象已经被串行化了,可是这个对象又被修改后重新部署了,那么在这种情况下,
用老软件来读取新文件格式虽然不是什么难事,但是有可能丢失一些信息。
serialVersionUID
来解 ......

学了java几个月后

我很喜欢学习java,那是在我正式上了这个课后就喜欢上了,我觉得我学的只是一般,但是我想把我的一些个人经验写下来,呵呵。。。。。
java是面向对象的编程语言,我以前只是初步学习过c,学习java时一些基本的语法只是看了看,因为和c是差不多的,但是后来不断地学习发现。学习java要好好熟悉各种各样的类,只要将各种类熟 ......

JAVA读书笔记(一)

1.变量:
对于基本类型的全局变量,若没有初始化,系统会自动初始化为该类型的初始值;而对于局部变量,则必须显示的进行初始化。
2.常量:
final int M_Max=111;
final表示只能给变量M_MAX赋值一次,赋值之后,M_MAX的值就不可以重新赋值。所赋的值可以是一个表达式,也可以是一个具体的值。
3.类常量:
static fina ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号