The company recently had a demand: the user's first measurement of body information and the last measurement of the information compared, and need to cut the contrast of the data into a picture can be sent to the user (need to do not open the page in real-time to the Web page and then save to the server, return to the image address), Through some articles on the Internet, we can find the following ways to realize: reference article 60761614
- Robot
- Use JNI to invoke third-party, C + + components
- Djnativeswing components
- Using Html2canvas
- Using Html2image
- Phantomjs
Using the PHANTOMJS,PLANTOMJS is a JavaScript-based WebKit kernel Headless browser that doesn't have a display interface, and you can do things based on WebKit browser. PLANTOMJS provides such as CSS selectors, Dom manipulation, JSON, HTML5, Canvas, SVG, and more. Phantomjs is useful for a wide range of applications, such as network monitoring, Web screenshots, page access automation, Web testing without a browser, and only a screenshot of the Web page. PLANTOMJS can be downloaded through the official website http://phantomjs.org/download.html, also can pass (only Windows version): https://pan.baidu.com/s/ 1EVX1RPX7GY0RGVEI6OHCWG Password: brb4 download, after decompression can see
The script examples folder under Rasterize.js is as follows:
varpage = require (' webpage '). Create (), System= Require (' System '), address, output, size;if(System.args.length < 3 | | system.args.length > 5) {Phantom.exit (1);} Else{Address= System.args[1];//Incoming URL addressoutput = system.args[2];//address of the output picturePage.viewportsize = {width:800, height:1800};//Custom definition Width height 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) {PageWidth= parseint (size[0], 10); PageHeight= parseint (size[1], 10); Page.viewportsize={width:pagewidth, height:pageheight}; Page.cliprect= {top:0, left:0, Width:pagewidth, height:pageheight}; } Else{Console.log ("Size:", system.args[3]); PageWidth= parseint (system.args[3], 10); PageHeight= parseint (PageWidth * 3/4, 10); Its as good an assumption as any console.log ("PageHeight:", pageheight); 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); } });}
Address = system.args[1];//Incoming URL addresses
output = system.args[2];//The address of the image
Page.viewportsize = {width:800, height:1800};//custom definition width high
Writing Java code
ImportJava.io.BufferedReader;Importjava.io.IOException;ImportJava.io.InputStream;ImportJava.io.InputStreamReader;/*** @Description: Converted to image according to Web address * @Author: admin * @CreateDate: June 22, 2018*/ Public classPhantomtools {Private StaticString TempPath = "d:/temp/img";//Picture Save Directory Private StaticString BLANK = ""; //The following content can be configured in the configuration file Private StaticString binpath = "D:/tooles/phantomjs/phantomjs-2.1.1-windows/bin/phantomjs.exe";//Plugin Introduction Address Private StaticString Jspath = "D:/tooles/phantomjs/phantomjs-2.1.1-windows/examples/rasterize.js";//JS Introduction Address//Execute cmd command Public Staticstring cmd (string imgagepath, string url) {returnBinPath + blank + jspath + blank + URL + blank +Imgagepath; } //Close Command Public Static voidClose (Process process, BufferedReader BufferedReader)throwsIOException {if(BufferedReader! =NULL) {bufferedreader.close (); } if(Process! =NULL) {Process.destroy (); Process=NULL; } } /** * @paramUserId *@paramURL *@throwsIOException*/ Public Static voidprinturlscreen2jpg (String URL)throwsioexception{String Imgagepath= temppath+ "/" +system.currenttimemillis () + ". png";//Picture Path//running external programs in Java using the runtime and process classesProcess Process =runtime.getruntime (). EXEC (cmd (imgagepath,url)); InputStream InputStream=Process.getinputstream (); BufferedReader Reader=NewBufferedReader (NewInputStreamReader (InputStream)); String tmp= ""; while(TMP = Reader.readline ())! =NULL) {close (Process,reader); } System.out.println ("Success"); } Public Static voidMain (string[] args)throwsioexception {String URL= "https://www.baidu.com/";//take Baidu homepage as an examplephantomtools.printurlscreen2jpg (URL); }}
effect, width and height can be adjusted according to your needs in JS
Java implementation of Web screenshot function (based on PHANTOMJS)