網(wǎng)頁截圖java代碼 java實現(xiàn)網(wǎng)頁截圖

如何以Java實現(xiàn)網(wǎng)頁截圖技術(shù)

使用cssbox插件

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比永豐網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式永豐網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋永豐地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。

package htmlToImage;

import java.io.File;

import java.io.FileOutputStream;

import org.fit.cssbox.demo.ImageRenderer;

public class CssBox {

public static void main(String[] args) throws Exception {

ImageRenderer render = new ImageRenderer();

458492.html?entry=team";

FileOutputStream out = new FileOutputStream(newFile("F:"+File.separator+"xxxhtml.png"));

render.renderURL(url, out, ImageRenderer.TYPE_PNG);

}

Java如何實現(xiàn)截圖功能

下面給你介紹將全屏幕截圖保存到指定目錄下的代碼,希望能對你有幫助:

核心代碼為:snapShot方法中的相關(guān)邏輯

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; //截圖名稱后面的數(shù)字累加

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

private String defaultImageFormat = "png"; //截圖后綴

Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); //獲取全屏幕的寬高尺寸等數(shù)據(jù)

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++;

// 根據(jù)文件前綴變量和文件格式變量,自動生成文件名

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 // 配合前端頁面上面的選擇尺寸等邏輯,傳到后臺,即可實現(xiàn)自由選擇截圖區(qū)域和大小的截圖br

public static void main(String[] args) {

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

cam.snapShot();

}

}

java 實現(xiàn)截屏!

主要是利用java的幾個先有的函數(shù),如Robot這個類的一個方法createScreenCapture一個獲得一個任意大小的屏幕圖像(在這里是全屏圖像),而所謂的截圖就是在這個圖像上畫出一個矩形,再利用上面的方法獲得這部分的圖像,程序中的cf.setAlwaysOnTop(true)是必需的;看起來是在屏幕上截圖,其實只是在一個在一個內(nèi)鑲有桌面背景的JFrame中截圖。不知道還有沒有其他的好方法~

附上代碼:

import java.awt.*;

import java.awt.image.*;

import java.awt.event.*;

import java.io.File;

import javax.imageio.ImageIO;

import javax.swing.*;

public class Camera {

/**

* @param args

*/

public static void main(String[] args) {

CameraJFrame cf=new CameraJFrame();

cf.setAlwaysOnTop(true);

cf.setUndecorated(true);

cf.setVisible(true);

}

}

class CameraJFrame extends JFrame

{

/**

*

*/

private static final long serialVersionUID = 1L;

Dimension di=Toolkit.getDefaultToolkit().getScreenSize();

public CameraJFrame()

{

setSize(di);

getContentPane().add(new CameraJPanel());

}

class CameraJPanel extends JPanel implements MouseListener,MouseMotionListener

{

/**

* flag主要是用來判別狀態(tài)。

* 文件的格式名是unname+數(shù)字編號,格式是png

*/

private static final long serialVersionUID = 1L;

BufferedImage bi,get;

int startx,starty,endx,endy;

int flag=1;

String filename="unname";

String fileformat="png";

int count=1;

public CameraJPanel()

{

try

{

Robot ro=new Robot();

bi=ro.createScreenCapture(new Rectangle(0,0,di.width,di.height));

}

catch(Exception e)

{

e.printStackTrace();

}

addMouseListener(this);

addMouseMotionListener(this);

}

public void paintComponent(Graphics g)

{

g.drawImage(bi,0,0,di.width,di.height,this);

g.setColor(Color.red);

g.drawRect(startx, starty, endx-startx, endy-starty);

}

public void mouseClicked(MouseEvent e) {

// TODO Auto-generated method stub

if(e.getButton()==MouseEvent.BUTTON3)

{

System.exit(0);

}

else if(e.getClickCount()==2)

{

try

{

Robot ro=new Robot();

get=ro.createScreenCapture(new Rectangle(startx,starty,endx-startx,endy-starty));

String name=filename+String.valueOf(count++)+"."+fileformat;

File f=new File(name);

ImageIO.write(get, fileformat, f);

}

catch(Exception ex)

{

ex.printStackTrace();

}

flag=1; //置flag為1,以便重新開始截圖。

startx=starty=endx=endy=0;

repaint();

}

}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {

if(flag==1)

{

startx=e.getX();

starty=e.getY();

}

}

public void mouseReleased(MouseEvent e) {

flag=0;

}

public void mouseDragged(MouseEvent e) {

flag=1;

endx=e.getX();

endy=e.getY();

repaint();

}

public void mouseMoved(MouseEvent e) {}

}

}

java截屏有哪幾種方法

前臺方式

1. 利用html2canvas實現(xiàn)前臺截屏

html2canvas項目的gitHub地址

html2canvas示例

html2canvas可以將HTML代碼塊進行截取,并生成快照形式的canvas,然后可以利用html5的下載功能提供圖片的下載接口,供用戶下載。

優(yōu)點:前臺技術(shù),實現(xiàn)比較容易。

缺點:此項目使用了html5的技術(shù),因此在對IE的兼容上,只可以在IE9+的版本上使用。

使用時,需要引用jQuery.js和html2canvas.js。(html2canvas.js可以在github上下載)

具體JavaScript代碼如下:

var canvas = function () {

html2canvas($("#chart"), {

onrendered: function (canvas) {

$("#class11").html(canvas);//將id為“class11”部分的代碼轉(zhuǎn)換為canvas

var type = 'png';//圖片類型為png

var imgData = canvas.toDataURL('png');//將圖片轉(zhuǎn)換為png類型的流

var _fixType = function (type) {

type = type.toLowerCase().replace(/jpg/i, 'jpeg'); var r = type.match(/png|jpeg|bmp|gif/)[0]; return 'image/' + r;

}; var saveFile = function (data, filename) {

var save_link = document.createElementNS('', 'a');

save_link.href = data;

save_link.download = filename; var event = document.createEvent('MouseEvents');

event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);

save_link.dispatchEvent(event);

}; //下載時的文件名

var filename = 'baidufe_' + (new Date()).getTime() + '.' + type; // 下載文件

saveFile(imgData, filename);

}

});

后臺方式(java)

1. 利用html2image實現(xiàn)

html2image的地址(google)

html2image是可以識別html標(biāo)簽并將html轉(zhuǎn)換成圖片的java項目。

優(yōu)點:后臺轉(zhuǎn)換,故對瀏覽器的版本基本沒有要求。

缺點:對樣式的識別不是很好,轉(zhuǎn)換出來的圖片比較簡單,基本沒有可以兼容的樣式。

使用方式:maven中引用如下依賴:

dependency

groupIdcom.github.xuwei-k/groupId

artifactIdhtml2image/artifactId

version0.1.0/version/dependency12345

2. 利用DJNativeSwing項目實現(xiàn)

純java代碼實現(xiàn)。使用DJNativeSwing這個項目,構(gòu)建一個swing瀏覽器,打開網(wǎng)址,之后截取圖片。(需要eclipse的swt庫支持)

優(yōu)點:純java實現(xiàn)。

缺點:需要多線程的支持,只在控制臺方式實現(xiàn)過(由于本人對于多線程的掌握較弱,目前沒有在spring項目中實現(xiàn)這個方法,求大神指導(dǎo)~~)

3. 利用phantomJs實現(xiàn)

phantomJs的GitHub地址

phantomJs官網(wǎng)

phantom利用的是webKit內(nèi)核,全面支持web而不需瀏覽器支持,快速,原生支持各種Web標(biāo)準(zhǔn)。

優(yōu)點:速度快,使用簡單。

缺點:需要在項目的服務(wù)器端引用exe文件進行截圖,并發(fā)性能有待考證。

如何以Java實現(xiàn)網(wǎng)頁截圖技術(shù),根據(jù)URL得到網(wǎng)頁快照

如何以Java實現(xiàn)網(wǎng)頁截圖技術(shù),根據(jù)URL得到網(wǎng)頁快照

// 此方法僅適用于JdK1.6及以上版本

Desktop.getDesktop().browse(

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

Robot robot = new Robot();

//停留10s

//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("c:/iteye.com.jpg"));

java 怎么實現(xiàn)網(wǎng)頁截圖

代碼如下

[java]

span style="font-size:18px;"package com.util;

import java.awt.AWTException;

import java.awt.Desktop;

import java.awt.Dimension;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Rectangle;

import java.awt.Robot;

import java.awt.Toolkit;

import java.awt.event.KeyEvent;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.net.URISyntaxException;

import java.net.URL;

import javax.imageio.ImageIO;

public class CutPicture {

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

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("c:/open.jpg"));

}

}/span

網(wǎng)站欄目:網(wǎng)頁截圖java代碼 java實現(xiàn)網(wǎng)頁截圖
文章源于:http://muchs.cn/article8/hgggop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、虛擬主機做網(wǎng)站、網(wǎng)站改版、服務(wù)器托管、微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名