java截圖工具源代碼 java截屏代碼

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

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

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、興業(yè)網(wǎng)絡(luò)推廣、小程序設(shè)計(jì)、興業(yè)網(wǎng)絡(luò)營銷、興業(yè)企業(yè)策劃、興業(yè)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供興業(yè)建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:muchs.cn

核心代碼為: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; // 默認(rèn)前綴(選擇存儲(chǔ)路徑例如: D:\\)

private String defName = "cameraImg"; // 默認(rèn)截圖名稱

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 {

// *** 核心代碼 *** 拷貝屏幕到一個(gè)BufferedImage對(duì)象screenshot

BufferedImage screenshot = (new Robot()).createScreenCapture(new Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));

serialNum++;

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

String name = filePreStr + String.valueOf(serialNum) + "." + imageFormat;

File f = new File(name);

System.out.print("Save File " + name);

// 將screenshot對(duì)象寫入圖像文件

ImageIO.write(screenshot, imageFormat, f);

System.out.print("..Finished!\n");

} catch (Exception ex) {

System.out.println(ex);

}

}

// 運(yùn)行之后,即可將全屏幕截圖保存到指定的目錄下面br // 配合前端頁面上面的選擇尺寸等邏輯,傳到后臺(tái),即可實(shí)現(xiàn)自由選擇截圖區(qū)域和大小的截圖br

public static void main(String[] args) {

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

cam.snapShot();

}

}

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

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

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

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

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

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

實(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ā)明顯不足(商機(jī)?),當(dāng)您需要完成此種操作時(shí),算得上碰到了Java的軟肋。但是,眾所周知Java也擁有強(qiáng)大的JNI能力,可以輕易將C/C++開發(fā)的同類組件引為己用。不懂可以扣五七八零二四一四四

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

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

實(shí)現(xiàn)方法:可參見此用例,具體封裝何種C/C++組件請(qǐng)自行選擇。

PS:示例來源于ACA HTML to Image Converter項(xiàng)目( ),這是一個(gè)收費(fèi)的HTML轉(zhuǎn)Image第三方組件,但封裝方式在Java中大同小異。

引用JNI封裝:

[java]?view?plaincopy

import?sun.awt.*;??

import?java.awt.*;??

import?javax.swing.*;??

import?java.awt.event.*;??

import?java.awt.*;??

import?java.awt.peer.*;??

public?class?Snap??

{??

static??

{??

System.loadLibrary("Snap");??

}??

public?static?void?main(?String[]?argv?)??

{??

Snap?t_xSnap?=?new?Snap();??

t_xSnap.Start("",?"snapshot-google.png");??

}??

public?native?void?Start(String?pi_strURL,?String?pi_strImageName);??

}??

CPP部分的實(shí)現(xiàn):

[java]?view?plaincopy

#include?windows.h??

#include?atlbase.h??

#include?"snap.h"??

#pragma?comment(lib,"atl.lib")??

#import?"./../../acawebthumb.dll"?no_namespace??

JNIEXPORT?void?JNICALL?Java_Snap_Start(JNIEnv?*pEnv,?jobject,?jstring?pi_strUrl,?jstring?pi_strFileName)??

{??

CoInitialize(0);??

_bstr_t?t_strUrl?=?pEnv-GetStringUTFChars(pi_strUrl,?0);??

_bstr_t?t_strFileName?=?pEnv-GetStringUTFChars(pi_strFileName,?0);??????

IThumbMakerPtr?HTML_Converter?=?NULL;??

HRESULT?hr?=?HTML_Converter.CreateInstance(L"ACAWebThumb.ThumbMaker");??????

if?(SUCCEEDED(hr))??

{???

HTML_Converter-SetURL(t_strUrl);??

if?(?0?==?HTML_Converter-StartSnap()?)??

HTML_Converter-SaveImage(t_strFileName);??

}??

if?(HTML_Converter)??

HTML_Converter.Release();??

CoUninitialize();???????????

}

以該組件圖像化yahoo界面的效果圖:

3、最扎實(shí)的方法——自行解析HTML標(biāo)記,并將其圖像化

方法詳解:眾所周知,HTML之所以在瀏覽器中以具體的網(wǎng)頁格式出現(xiàn),并非服務(wù)器端傳了一整個(gè)應(yīng)用到客戶端,而是源自于瀏覽器對(duì)于客戶端自行解析的結(jié)果。因此,只要我們將對(duì)應(yīng)的解析一一實(shí)現(xiàn),那么將網(wǎng)頁圖形化,就將不是什么難事。

優(yōu)勢(shì):純Java實(shí)現(xiàn),一勞永逸,一旦開發(fā)完成則永遠(yuǎn)通用,而且有一定的商用價(jià)值。

劣勢(shì):開發(fā)費(fèi)時(shí),且需要針對(duì)不同語法做精確分析,才能保證輸出的基本正確。尤其在涉及到JavaScript解析時(shí),難度將尤其增大。

實(shí)現(xiàn)方法:目前尚無具體案例可供參考。但是,由于Java有jdic之類的瀏覽器項(xiàng)目存在(),而Java圖形界面又屬繪制生成。從理論上說,我們可以將所有具備Graphics的組件圖形化保存。

而如果自行解析,那么您需要建立HTML解析器(或使用第三方的,萬幸Java在這方面的組件很多),了解Java2D機(jī)制,了解何時(shí)該使用drawString繪制文字,何時(shí)又該使用drawImage插入圖片等等。

謝謝采納!

哪里有JAVA寫的類似QQ截圖工具的源代碼?

不能立即給你提供源碼 但是可以教給你怎么實(shí)現(xiàn)。

首先 你要截屏 肯定要在屬于用鼠標(biāo)圈定一個(gè)區(qū)域來截取這個(gè)區(qū)域。

你可以這樣:

先截取當(dāng)前屏幕的滿屏圖片:new robot().createScreenCapture(r) 這個(gè)是截屏代碼 r是Rectangle類型 代表要截取的區(qū)域。

然后用 JDialog 做一個(gè)無控制條的窗口,大小設(shè)置成滿屏,把截取的這個(gè)滿屏的圖片貼到這個(gè) JDiaglog 里

然后做一下鼠標(biāo)圈定區(qū)域,這個(gè)很簡單 不詳細(xì)說了, 最后對(duì)你圈定的這個(gè)區(qū)域再做一次截屏,這個(gè)不就是你要的截圖了。,。 最后別忘了 截屏完畢后 關(guān)閉JDialog

你要是覺得這樣做麻煩,也沒別的辦法。 反正我很明白 QQ的截屏也是這樣做的

本文名稱:java截圖工具源代碼 java截屏代碼
文章鏈接:http://muchs.cn/article28/doeodjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站導(dǎo)航營銷型網(wǎng)站建設(shè)、微信公眾號(hào)、定制開發(fā)

廣告

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

商城網(wǎng)站建設(shè)