Java利用Phantomjs实现生成图片的方法-创新互联
这篇文章主要讲解了Java利用Phantomjs实现生成图片的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
麒麟ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!今天,给大家分享一个Java后端利用Phantomjs实现生成图片的功能,同学们使用的时候,可以参考下!
PhantomJS简介
首先,什么是PhantomJS?
根据官网介绍:
PhantomJS is a command-line tool. -- 其实就是一个命令行工具。
PhantomJS的下载地址:
Windows:phantomjs-2.1.1-windows.zip
Linux:phantomjs-2.1.1-linux-x86_64.tar.bz2;phantomjs-2.1.1-linux-i686.tar.bz2
MacOS:phantomjs-2.1.1-macosx.zip
下载下来后,我们看到bin目录下就是可执行文件phantomjs.exe
,我们可以将它配置到环境变量中,方便命令使用!
还有一个examples目录,它下面是很多js样例,关于这些样例作用,参考官网解释,给大家做个简单翻译:
1. Basic examples
- arguments.js:显示传递给脚本的参数
- countdown.js:打印10秒倒计时
- echoToFile.js:将命令行参数写入文件
- fibo.js:列出了斐波那契数列中的前几个数字
- hello.js:显示著名消息
- module.js:并universe.js演示模块系统的使用
- outputEncoding.js:显示各种编码的字符串
- printenv.js:显示系统的环境变量
- scandir.js:列出目录及其子目录中的所有文件
- sleepsort.js:对整数进行排序并根据其值延迟显示
- version.js:打印出PhantomJS版本号
- page_events.js:打印出页面事件触发:有助于更好地掌握page.on*回调
2. Rendering/rasterization
- colorwheel.js:使用HTML5画布创建色轮
- rasterize.js:将网页光栅化为图像或PDF
- render_multi_url.js:将多个网页渲染为图像
3. Page automation
- injectme.js:将自身注入到网页上下文中
- phantomwebintro.js:使用jQuery从phantomjs.org读取.version元素文本
- unrandomize.js:在页面初始化时修改全局对象
- waitfor.js:等待直到测试条件为真或发生超时
4. Network
- detectniff.js:检测网页是否嗅探用户代理
- loadspeed.js:计算网站的加载速度
- netlog.js:转储所有网络请求和响应
- netsniff.js:以HAR格式捕获网络流量
- post.js:将HTTP POST请求发送到测试服务器
- postserver.js:启动Web服务器并向其发送HTTP POST请求
- server.js:启动Web服务器并向其发送HTTP GET请求
- serverkeepalive.js:启动Web服务器,以纯文本格式回答
- simpleserver.js:启动Web服务器,以HTML格式回答
5. Testing
- run-jasmine.js:运行基于Jasmine的测试
- run-qunit.js:运行基于QUnit的测试
6. Browser
- features.js:检测浏览器功能使用modernizr.js
- useragent.js:更改浏览器的用户代理属性
今天,我们根据网页URL生成图片,使用的就是rasterize.js:将网页光栅化为图像或PDF。
了解rasterize.js
我们来看一下rasterize.js的内容(源文件对size的处理有错误,这里已修正!):
"use strict"; var page = require('webpage').create(), system = require('system'), address, output, size; if (system.args.length < 3 || system.args.length > 5) { console.log('Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]'); console.log(' paper (pdf output) examples: "5in*7.5in", "10cm*20cm", "A4", "Letter"'); console.log(' image (png/jpg output) examples: "1920px" entire page, window width 1920px'); console.log(' "800px*600px" window, clipped to 800x600'); phantom.exit(1); } else { address = system.args[1]; output = system.args[2]; page.viewportSize = { width: 800, height: 200 }; if (system.args.length > 3 && system.args[2].substr(-4) === ".pdf") { size = system.args[3].split('*'); page.paperSize = size.length === 2 ? { width: size[0], height: size[1], margin: '0px' } : { format: system.args[3], orientation: 'portrait', margin: '1cm' }; } else if (system.args.length > 3 && system.args[3].substr(-2) === "px") { size = system.args[3].split('*'); if (size.length === 2) { var pageWidth = parseInt(size[0].substr(0,size[0].indexOf("px")), 10); var pageHeight = parseInt(size[1].substr(0,size[1].indexOf("px")), 10); page.viewportSize = { width: pageWidth, height: pageHeight }; page.clipRect = { top: 0, left: 0, width: pageWidth, height: pageHeight }; } else { var pageWidth = parseInt(system.args[3].substr(0,system.args[3].indexOf("px")), 10); var pageHeight = parseInt(pageWidth * 3/4, 10); // it's as good an assumption as any page.viewportSize = { width: pageWidth, height: pageHeight }; } } if (system.args.length > 4) { page.zoomFactor = system.args[4]; } page.open(address, function (status) { if (status !== 'success') { console.log('Unable to load the address!'); phantom.exit(1); } else { window.setTimeout(function () { page.render(output); phantom.exit(); }, 200); } }); }
文章名称:Java利用Phantomjs实现生成图片的方法-创新互联
网页URL:http://ybzwz.com/article/dojhhd.html