save_link.dispatchEvent(event);
};//下载时的文件名
var filename = 'baidufe_' + (new Date()).getTime() + '.' + type;// 下载文件
saveFile(imgData, filename);
}
});
后台方式(java)
1. 利用html2image实现
html2image的地址(google)
html2image是可以识别html标签并将html转换成图片的java项目 。
优点:后台转换 , 故对浏览器的版本基本没有要求 。
缺点:对样式的识别不是很好 , 转换出来的图片比较简单,基本没有可以兼容的样式 。
使用方式:maven中引用如下依赖:
dependency
groupIdcom.github.xuwei-k/groupId
artifactIdhtml2image/artifactId
version0.1.0/version/dependency12345
2. 利用DJNativeSwing项目实现
纯java代码实现 。使用DJNativeSwing这个项目,构建一个swing浏览器,打开网址,之后截取图片 。(需要eclipse的swt库支持)
优点:纯java实现 。
缺点:需要多线程的支持,只在控制台方式实现过(由于本人对于多线程的掌握较弱,目前没有在spring项目中实现这个方法,求大神指导~~)
3. 利用phantomJs实现
phantomJs的GitHub地址
phantomJs
phantom利用的是webKit内核 , 全面支持web而不需浏览器支持,快速,原生支持各种Web标准 。
优点:速度快 , 使用简单 。
缺点:需要在项目的服务器端引用exe文件进行截图,并发性能有待考证 。
如何以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代码截图了Java的软肋 。但是 , 众所周知Java也拥有强大的JNI能力,可以轻易将C/C++开发的同类组件引为己用 。不懂可以扣五七八零二四一四四
优势:实现简单,只需要封装对应的DLL文件,就可以让Java实现同类功能 。
劣势:同其他JNI实现一样 , 在跨平台时存在隐患,而且您的程序将不再属于纯Java应用 。
java 实现截屏!主要是利用java高级Java代码截图的几个先有高级Java代码截图的函数高级Java代码截图,如Robot这个类的一个方法createScreenCapture一个获得一个任意大小的屏幕图像(在这里是全屏图像),而所谓的截图就是在这个图像上画出一个矩形,再利用上面的方法获得这部分的图像 , 程序中的cf.setAlwaysOnTop(true)是必需的;看起来是在屏幕上截图,其实只是在一个在一个内镶有桌面背景的JFrame中截图 。不知道还有没有其他的好方法~
推荐阅读
- 安卓平板怎么关闭三指放大,安卓平板怎么关闭三指放大屏幕
- wordpress价格,wordpress 2021
- 电影虚拟空间,虚拟空间 电影
- 乐华艺人都直播带货,乐华签约艺人
- php无刷新获取数据 php 刷新
- gis栅格平均值,gis栅格转矢量
- 如何把图片变成ppt背景,如何把图片变成ppt背景图
- 苹果录屏如何录直播,苹果怎么录制直播
- 怎么查询mysql字段名 mysql怎么看字段类型