真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java騰訊截圖源代碼 java實現(xiàn)屏幕截圖

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

事實上,如果您想以Java實現(xiàn)網(wǎng)頁截圖,也就是“輸入一段網(wǎng)址,幾秒鐘過后就能截取一張網(wǎng)頁縮略圖”的效果。那么,您至少有3種方式可以選擇。

站在用戶的角度思考問題,與客戶深入溝通,找到朝陽網(wǎng)站設計與朝陽網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、網(wǎng)絡空間、企業(yè)郵箱。業(yè)務覆蓋朝陽地區(qū)。

1、最直接的方式——使用Robot

方法詳解:該方法利用Robat提供的強大桌面操作能力,硬性調(diào)用瀏覽器打開指定網(wǎng)頁,并將網(wǎng)頁信息保存到本地。

優(yōu)勢:簡單易用,不需要任何第三方插件。

缺點:不能同時處理大量數(shù)據(jù),技術(shù)含量過低,屬于應急型技巧。

實現(xiàn)方法:使用如下代碼即可。

[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、最常規(guī)的方式——利用JNI,調(diào)用第三方C/C++組件

方法詳解:目前來講,Java領(lǐng)域?qū)τ诰W(wǎng)頁截圖組件的開發(fā)明顯不足(商機?),當您需要完成此種操作時,算得上碰到了Java的軟肋。但是,眾所周知Java也擁有強大的JNI能力,可以輕易將C/C++開發(fā)的同類組件引為己用。不懂可以扣五七八零二四一四四

優(yōu)勢:實現(xiàn)簡單,只需要封裝對應的DLL文件,就可以讓Java實現(xiàn)同類功能。

劣勢:同其他JNI實現(xiàn)一樣,在跨平臺時存在隱患,而且您的程序?qū)⒉辉賹儆诩僇ava應用。

用JAVA怎么做截屏工具?

哎~要是你給我個分就好了!我前幾天剛剛做的!你拿去吧!

/*

作者:泡沫

地址:

功能:用于截取圖片,方便快捷!

mail:yuhuidog#163.com (注意:其中#為@)

*/

import java.awt.AWTException;

import java.awt.BorderLayout;

import java.awt.Button;

import java.awt.Color;

import java.awt.Cursor;

import java.awt.Dimension;

import java.awt.FileDialog;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Panel;

import java.awt.Point;

import java.awt.Rectangle;

import java.awt.Robot;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.MouseMotionListener;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

public class AWTpicture extends Frame implements MouseListener,MouseMotionListener,ActionListener{

private int firstX,firstY,frameWidth,frameHeight;

private int firstWith,firstHeight,firstPointx,firstPointy;

private BufferedImage bi,sbi,original;

private Robot robot;

private Rectangle rectangle;

private Rectangle rectangleCursor,rectangleCursorUp,rectangleCursorDown,rectangleCursorLeft,rectangleCursorRight;

private Rectangle rectangleCursorRU,rectangleCursorRD,rectangleCursorLU,rectangleCursorLD;

private Image bis;

private Dimension dimension;

private Button button,button2,clearButton;

private Point[] point=new Point[3];

private int width,height;

private int nPoints=5;

private Panel panel;

private boolean drawHasFinish=false,change=false;

private int changeFirstPointX,changeFirstPointY,changeWidth,changeHeight;

private boolean changeUP=false,changeDOWN=false,changeLEFT=false,changeRIGHT=false,changeRU=false,changeRD=false,changeLU=false,changeLD=false;

private boolean clearPicture=false,redraw=false;

private FileDialog fileDialog;

private AWTpicture(){

//取得屏幕大小

dimension=Toolkit.getDefaultToolkit().getScreenSize();

frameWidth=dimension.width;

frameHeight=dimension.height;

fileDialog=new FileDialog(this,"泡沫截圖",FileDialog.SAVE);

rectangle=new Rectangle(frameWidth,frameHeight);

panel=new Panel();

button=new Button("退出");

button.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));

button.setBackground(Color.green);

button2=new Button("截取");

button2.setBackground(Color.darkGray);

button2.addActionListener(new MyTakePicture(this));

button2.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));

button.addActionListener(this);

clearButton=new Button("重繪");

clearButton.setBackground(Color.green);

clearButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));

clearButton.addActionListener(new MyClearPicture(this));

panel.setLayout(new BorderLayout());

panel.add(clearButton, BorderLayout.SOUTH);

panel.add(button, BorderLayout.NORTH);

panel.add(button2, BorderLayout.CENTER);

try {

robot=new Robot();

} catch (AWTException e) {

e.printStackTrace();

}

//截取全屏

bi=robot.createScreenCapture(rectangle);

original=bi;

this.setSize(frameWidth,frameHeight);

this.setUndecorated(true);

this.addMouseListener(this);

this.addMouseMotionListener(this);

this.add(panel,BorderLayout.EAST);

this.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));

this.setVisible(true);

this.repaint();

}

public static void main(String[] args){

new AWTpicture();

}

public void paint(Graphics g) {

this.drawR(g);

}

//緩存圖片

public void update(Graphics g){

if(bis==null){

bis=this.createImage(frameWidth, frameHeight);

}

Graphics ga=bis.getGraphics();

Color c=ga.getColor();

ga.setColor(Color.black);

ga.fillRect(0, 0, frameWidth, frameHeight);

ga.setColor(c);

paint(ga);

g.drawImage(bis, 0, 0, frameWidth, frameHeight, null);

}

public void mouseClicked(MouseEvent e) {

}

public void mouseEntered(MouseEvent e) {

// TODO Auto-generated method stub

}

public void mouseExited(MouseEvent e) {

// TODO Auto-generated method stub

}

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

}

public void mouseReleased(MouseEvent e) {

if(!drawHasFinish){

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[1].x;

firstPointy=point[1].y;

}

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[2].x;

firstPointy=point[1].y;

}

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[1].x;

firstPointy=point[2].y;

}

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[2].x;

firstPointy=point[2].y;

}

changeFirstPointX=firstPointx;

changeFirstPointY=firstPointy;

if(point[1]!=null point[2]!=null ){

rectangleCursorUp=new Rectangle(firstPointx+20,firstPointy-10,width-40,20);

rectangleCursorDown=new Rectangle(firstPointx+20,firstPointy+height-10,width-40,20);

rectangleCursorLeft=new Rectangle(firstPointx-10,firstPointy+10,20,height-20);

rectangleCursorRight=new Rectangle(firstPointx+width-10,firstPointy+10,20,height-20);

rectangleCursorLU=new Rectangle(firstPointx-10,firstPointy-10,30,20);

rectangleCursorLD=new Rectangle(firstPointx-10,firstPointy+height-10,30,20);

rectangleCursorRU=new Rectangle(firstPointx+width-10,firstPointy-10,20,20);

rectangleCursorRD=new Rectangle(firstPointx+width-10,firstPointy+height-10,20,20);

drawHasFinish=true;

}

}

//確定每邊能改變大小的矩形

if(drawHasFinish){

rectangleCursorUp=new Rectangle(changeFirstPointX+20,changeFirstPointY-10,changeWidth-40,20);

rectangleCursorDown=new Rectangle(changeFirstPointX+20,changeFirstPointY+changeHeight-10,changeWidth-40,20);

rectangleCursorLeft=new Rectangle(changeFirstPointX-10,changeFirstPointY+10,20,changeHeight-20);

rectangleCursorRight=new Rectangle(changeFirstPointX+changeWidth-10,changeFirstPointY+10,20,changeHeight-20);

rectangleCursorLU=new Rectangle(changeFirstPointX-2,changeFirstPointY-2,10,10);

rectangleCursorLD=new Rectangle(changeFirstPointX-2,changeFirstPointY+changeHeight-2,10,10);

rectangleCursorRU=new Rectangle(changeFirstPointX+changeWidth-2,changeFirstPointY-2,10,10);

rectangleCursorRD=new Rectangle(changeFirstPointX+changeWidth-2,changeFirstPointY+changeHeight-2,10,10);

}

}

public void mouseDragged(MouseEvent e) {

point[2]=e.getPoint();

//if(!drawHasFinish){

this.repaint();

// }

//托動鼠標移動大小

if(change){

if(changeUP){

changeHeight=changeHeight+changeFirstPointY-e.getPoint().y;

changeFirstPointY=e.getPoint().y;

}

if(changeDOWN){

changeHeight=e.getPoint().y-changeFirstPointY;

}

if(changeLEFT){

changeWidth=changeWidth+changeFirstPointX-e.getPoint().x;

changeFirstPointX=e.getPoint().x;

}

if(changeRIGHT){

changeWidth=e.getPoint().x-changeFirstPointX;

}

if(changeLU){

changeWidth=changeWidth+changeFirstPointX-e.getPoint().x;

changeHeight=changeHeight+changeFirstPointY-e.getPoint().y;

changeFirstPointX=e.getPoint().x;

changeFirstPointY=e.getPoint().y;

}

if(changeLD){

changeWidth=changeWidth+changeFirstPointX-e.getPoint().x;

changeHeight=e.getPoint().y-changeFirstPointY;

changeFirstPointX=e.getPoint().x;

}

if(changeRU){

changeWidth=e.getPoint().x-changeFirstPointX;

changeHeight=changeHeight+changeFirstPointY-e.getPoint().y;

changeFirstPointY=e.getPoint().y;

}

if(changeRD){

changeWidth=e.getPoint().x-changeFirstPointX;

changeHeight=e.getPoint().y-changeFirstPointY;

}

this.repaint();

}

}

public void mouseMoved(MouseEvent e) {

point[1]=e.getPoint();

//改變鼠標的形狀

if(rectangleCursorUp!=null rectangleCursorUp.contains(point[1])){

this.setCursor(new Cursor(Cursor.N_RESIZE_CURSOR));

change=true;

changeUP=true;

}else if(rectangleCursorDown!=null rectangleCursorDown.contains(point[1])){

this.setCursor(new Cursor(Cursor.S_RESIZE_CURSOR));

change=true;

changeDOWN=true;

}else if(rectangleCursorLeft!=null rectangleCursorLeft.contains(point[1])){

this.setCursor(new Cursor(Cursor.W_RESIZE_CURSOR));

change=true;

changeLEFT=true;

}else if(rectangleCursorRight!=null rectangleCursorRight.contains(point[1]) ){

this.setCursor(new Cursor(Cursor.W_RESIZE_CURSOR));

change=true;

changeRIGHT=true;

}else if(rectangleCursorLU !=null rectangleCursorLU.contains(point[1])){

this.setCursor(new Cursor(Cursor.NW_RESIZE_CURSOR));

change=true;

changeLU=true;

}else if(rectangleCursorLD !=null rectangleCursorLD.contains(point[1])){

this.setCursor(new Cursor(Cursor.SW_RESIZE_CURSOR));

change=true;

changeLD=true;

}else if(rectangleCursorRU!=null rectangleCursorRU.contains(point[1])){

this.setCursor(new Cursor(Cursor.NE_RESIZE_CURSOR));

change=true;

changeRU=true;

}else if(rectangleCursorRD!=null rectangleCursorRD.contains(point[1])){

this.setCursor(new Cursor(Cursor.SE_RESIZE_CURSOR));

change=true;

changeRD=true;

}else{

this.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));

changeUP=false;changeDOWN=false;changeRIGHT=false;changeLEFT=false;changeRU=false;

changeRD=false;changeLU=false;changeLD=false;

}

redraw=false;

}

@Override

public void actionPerformed(ActionEvent e) {

System.exit(0);

}

class MyTakePicture implements ActionListener{

AWTpicture aWTpicture;

MyTakePicture(AWTpicture aWTpicture){

this.aWTpicture=aWTpicture;

}

//保存圖片

public void actionPerformed(ActionEvent e) {

fileDialog.setVisible(true);

if(changeWidth0){

sbi=bi.getSubimage(changeFirstPointX,changeFirstPointY,changeWidth,changeHeight);

File file=new File(fileDialog.getDirectory());

file.mkdir();

try {

ImageIO.write(sbi, "jpeg",new File(file,fileDialog.getFile()+".jpg") );

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

}

class MyClearPicture implements ActionListener{

AWTpicture aWTpicture;

MyClearPicture(AWTpicture aWTpicture){

this.aWTpicture=aWTpicture;

}

public void actionPerformed(ActionEvent e) {

drawHasFinish=false;

change=false;

redraw=true;

rectangleCursorUp=null;

rectangleCursorDown=null;

rectangleCursorLeft=null;

rectangleCursorRight=null;

rectangleCursorRU=null;

rectangleCursorRD=null;

rectangleCursorLU=null;

rectangleCursorLD=null;

changeWidth=0;

changeHeight=0;

aWTpicture.repaint();

}

}

public void drawR(Graphics g){

g.drawImage(bi, 0,0,frameWidth,frameHeight, null);

if(point[1]!=null point[2]!=null !drawHasFinish !redraw){

int[] xPoints={point[1].x,point[2].x,point[2].x,point[1].x,point[1].x};

int[] yPoints={point[1].y,point[1].y,point[2].y,point[2].y,point[1].y};

width=(point[2].x-point[1].x)0?(point[2].x-point[1].x):(point[1].x-point[2].x);

height=(point[2].y-point[1].y)0?(point[2].y-point[1].y):(point[1].y-point[2].y);

changeWidth=width;

changeHeight=height;

Color c=g.getColor();

g.setColor(Color.red);

g.drawString(width+"*"+height, point[1].x, point[1].y-5);

//畫點

/*int i;

if()*/

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[1].x;

firstPointy=point[1].y;

}

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[2].x;

firstPointy=point[1].y;

}

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[1].x;

firstPointy=point[2].y;

}

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[2].x;

firstPointy=point[2].y;

}

g.fillRect(firstPointx-2,firstPointy-2 , 5,5);

g.fillRect(firstPointx+(width)/2,firstPointy-2 , 5,5);

g.fillRect(firstPointx+width-2,firstPointy-2 , 5,5);

g.fillRect(firstPointx+width-2,firstPointy+ height/2-2, 5,5);

g.fillRect(firstPointx+width-2,firstPointy+height-2, 5,5);

g.fillRect(firstPointx+(width)/2,firstPointy+height-2, 5,5);

g.fillRect(firstPointx-2,firstPointy+height-2, 5,5);

g.fillRect(firstPointx-2,firstPointy+ height/2-2, 5,5);

//畫矩形

//g.drawString("fafda", point[1].x-100, point[1].y-5);

g.drawPolyline(xPoints, yPoints, nPoints);

}

if(change){

g.setColor(Color.red);

g.drawString(changeWidth+"*"+changeHeight, changeFirstPointX, changeFirstPointY-5);

g.fillRect(changeFirstPointX-2,changeFirstPointY-2 , 5,5);

g.fillRect(changeFirstPointX+(changeWidth)/2,changeFirstPointY-2 , 5,5);

g.fillRect(changeFirstPointX+changeWidth-2,changeFirstPointY-2 , 5,5);

g.fillRect(changeFirstPointX+changeWidth-2,changeFirstPointY+ changeHeight/2-2, 5,5);

g.fillRect(changeFirstPointX+changeWidth-2,changeFirstPointY+changeHeight-2, 5,5);

g.fillRect(changeFirstPointX+(changeWidth)/2,changeFirstPointY+changeHeight-2, 5,5);

g.fillRect(changeFirstPointX-2,changeFirstPointY+changeHeight-2, 5,5);

g.fillRect(changeFirstPointX-2,changeFirstPointY+ changeHeight/2-2, 5,5);

g.drawRect(changeFirstPointX, changeFirstPointY, changeWidth, changeHeight);

}

}

}

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如何實現(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();

}

}


網(wǎng)站標題:java騰訊截圖源代碼 java實現(xiàn)屏幕截圖
文章路徑:http://weahome.cn/article/ddoipoh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部