當前位置:首頁 » 編程語言 » java截圖

java截圖

發布時間: 2022-07-14 20:36:21

java中有截圖工具么

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

/*
作者:泡沫
地址:http://hi..com/av51
功能:用於截取圖片,方便快捷!
mail:yuhuidog#163.com (注意:其中#為@)
*/
import java.awt.AWTException;

Ⅱ 如何以Java實現網頁截圖技術,根據URL得到網頁快照

如何以Java實現網頁截圖技術,根據URL得到網頁快照

// 此方法僅適用於JdK1.6及以上版本
Desktop.getDesktop().browse(
new URL("http://www.csdn.net/").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 禁止截屏鍵

在安卓ANDROID開發中,有些內容或文檔是為防止知識產權,防信息外泄,需要做一些保護措施,Android中如何禁止用戶截屏,防止截圖java代碼

在需要設置禁止截屏的Activity的onCreate()方法中調用setContentView()方法前添加一行代碼即可:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
或:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);

將以上代碼,加入需要保護的ACTIVE中,以上 JAVA代碼可以有效防止截圖,截屏操作行為,這是一種很好的保護策略。

Ⅳ JAVA 如何實現對已有圖片的部分截圖

import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;

public class Test95 {
// 圖片源

private static final String SRC_FILE = "c://1.jpg";

// 目標圖片

private static final String DEST_FILE = "c://2.jpg";

public void readUsingImageReader() throws Exception{

// 取得圖片讀入器

Iterator readers = ImageIO.getImageReadersByFormatName("jpg");

System.out.println(readers);

ImageReader reader = (ImageReader) readers.next();

System.out.println(reader);

// 取得圖片讀入流

InputStream source = new FileInputStream(SRC_FILE);

ImageInputStream iis = ImageIO.createImageInputStream(source);

reader.setInput(iis, true);

// 圖片參數

ImageReadParam param = reader.getDefaultReadParam();

Rectangle rect = new Rectangle(100, 200, 300, 150);//100,200是左上起始位置,300就是取寬度為300的,就是從100開始取300寬,就是橫向100~400,同理縱向200~350的區域就取高度150

param.setSourceRegion(rect);

BufferedImage bi = reader.read(0, param);

ImageIO.write(bi, "jpg", new File(DEST_FILE));

}
public static void main(String[] args) throws Exception{ //main方法測試用
Test95 t =new Test95();
t.readUsingImageReader();
}
}

Ⅳ java 截屏程序,該怎麼處理

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

public class sa extends JFrame {

private static final long serialVersionUID = -267804510087895906L;

private JButton button = null;

private JLabel imgLabel = null;

public sa() {
button = new JButton("模擬屏幕(點右鍵退出)");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
new ScreenWindow(imgLabel);
} catch (Exception e1) {
JOptionPane.showConfirmDialog(null, "出現意外錯誤!", "系統提示", JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE);
}
}
});
JPanel pane = new JPanel();
pane.setBackground(Color.WHITE);
imgLabel = new JLabel();
pane.add(imgLabel);
JScrollPane spane = new JScrollPane(pane);
this.getContentPane().add(button, BorderLayout.NORTH);
this.getContentPane().add(spane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 200);
this.setLocationRelativeTo(null);
this.setVisible(true);
}

public static void main(String[] args) {
new sa();
}
}

class ScreenWindow extends JFrame {

private static final long serialVersionUID = -3758062802950480258L;

private boolean isDrag = false;

private int x = 0;

private int y = 0;

private int xEnd = 0;

private int yEnd = 0;

public ScreenWindow(final JLabel imgLabel) throws AWTException, InterruptedException {
Dimension screenDims = Toolkit.getDefaultToolkit().getScreenSize();
JLabel label = new JLabel(new ImageIcon(ScreenImage.getScreenImage(0, 0, screenDims.width, screenDims.height)));
label.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
label.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
dispose();
}
}

public void mousePressed(MouseEvent e) {
x = e.getX();
y = e.getY();
}

public void mouseReleased(MouseEvent e) {
if (isDrag) {
xEnd = e.getX();
yEnd = e.getY();
if(x > xEnd){
int temp = x;
x = xEnd;
xEnd = temp;
}
if(y > yEnd){
int temp = y;
y = yEnd;
yEnd = temp;
}
try {
imgLabel.setIcon(new ImageIcon(ScreenImage.getScreenImage(x, y, xEnd - x, yEnd - y)));
} catch (Exception ex) {
JOptionPane.showConfirmDialog(null, "出現意外錯誤!", "系統提示", JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE);
}
dispose();
}
}
});
label.addMouseMotionListener(new MouseMotionListener() {
public void mouseDragged(MouseEvent e) {
if(!isDrag)
isDrag = true;
}

public void mouseMoved(MouseEvent e) {
/** 拖動過程的虛線選取框需自己實現 */
}
});
this.setUndecorated(true);
this.getContentPane().add(label);
this.setSize(screenDims.width, screenDims.height);
this.setVisible(true);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
}

class ScreenImage {

public static Image getScreenImage(int x, int y, int w, int h) throws AWTException, InterruptedException {
Robot robot = new Robot();
Image screen = robot.createScreenCapture(new Rectangle(x, y, w, h)).getScaledInstance(w, h, Image.SCALE_SMOOTH);
MediaTracker tracker = new MediaTracker(new Label());
tracker.addImage(screen, 1);
tracker.waitForID(0);
return screen;
}
}

Ⅵ java 怎麼實現網頁截圖

事實上,如果您想以Java實現網頁截圖,也就是「輸入一段網址,幾秒鍾過後就能截取一張網頁縮略圖」的效果。那麼,您至少有3種方式可以選擇。

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

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

優勢:簡單易用,不需要任何第三方插件。

缺點:不能同時處理大量數據,技術含量過低,屬於應急型技巧。

實現方法:使用如下代碼即可。

[java]viewplain
publicstaticvoidmain(String[]args)throwsMalformedURLException,
IOException,URISyntaxException,AWTException{
//此方法僅適用於JdK1.6及以上版本
Desktop.getDesktop().browse(
newURL("http://google.com/intl/en/").toURI());
Robotrobot=newRobot();
robot.delay(10000);
Dimensiond=newDimension(Toolkit.getDefaultToolkit().getScreenSize());
intwidth=(int)d.getWidth();
intheight=(int)d.getHeight();
//最大化瀏覽器
robot.keyRelease(KeyEvent.VK_F11);
robot.delay(2000);
Imageimage=robot.createScreenCapture(newRectangle(0,0,width,
height));
BufferedImagebi=newBufferedImage(width,height,
BufferedImage.TYPE_INT_RGB);
Graphicsg=bi.createGraphics();
g.drawImage(image,0,0,width,height,null);
//保存圖片
ImageIO.write(bi,"jpg",newFile("google.jpg"));
}

2、最常規的方式——利用JNI,調用第三方C/C++組件

方法詳解:目前來講,Java領域對於網頁截圖組件的開發明顯不足(商機?),當您需要完成此種操作時,算得上碰到了Java的軟肋。但是,眾所周知Java也擁有強大的JNI能力,可以輕易將C/C++開發的同類組件引為己用。不懂可以扣五七八零二四一四四
優勢:實現簡單,只需要封裝對應的DLL文件,就可以讓Java實現同類功能。

劣勢:同其他JNI實現一樣,在跨平台時存在隱患,而且您的程序將不再屬於純Java應用。

實現方法:可參見此用例,具體封裝何種C/C++組件請自行選擇。

PS:示例來源於ACA HTML to Image Converter項目(http://www.acasystems.com/en/web-thumb-activex/faq-convert-html-to-image-in-java.htm ),這是一個收費的HTML轉Image第三方組件,但封裝方式在Java中大同小異。

引用JNI封裝:

[java]viewplain
importsun.awt.*;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.awt.*;
importjava.awt.peer.*;
publicclassSnap
{
static
{
System.loadLibrary("Snap");
}
publicstaticvoidmain(String[]argv)
{
Snapt_xSnap=newSnap();
t_xSnap.Start("http://www.google.com","snapshot-google.png");
}
publicnativevoidStart(Stringpi_strURL,Stringpi_strImageName);
}

CPP部分的實現:

[java]viewplain
#include<windows.h>
#include<atlbase.h>
#include"snap.h"
#pragmacomment(lib,"atl.lib")
#import"./../../acawebthumb.dll"no_namespace
JNIEXPORTvoidJNICALLJava_Snap_Start(JNIEnv*pEnv,jobject,jstringpi_strUrl,jstringpi_strFileName)
{
CoInitialize(0);
_bstr_tt_strUrl=pEnv->GetStringUTFChars(pi_strUrl,0);
_bstr_tt_strFileName=pEnv->GetStringUTFChars(pi_strFileName,0);
IThumbMakerPtrHTML_Converter=NULL;
HRESULThr=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、最扎實的方法——自行解析HTML標記,並將其圖像化

方法詳解:眾所周知,HTML之所以在瀏覽器中以具體的網頁格式出現,並非伺服器端傳了一整個應用到客戶端,而是源自於瀏覽器對於客戶端自行解析的結果。因此,只要我們將對應的解析一一實現,那麼將網頁圖形化,就將不是什麼難事。

優勢:純Java實現,一勞永逸,一旦開發完成則永遠通用,而且有一定的商用價值。

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

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

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

Ⅶ java 實現截屏!

主要是利用java的幾個先有的函數,如Robot這個類的一個方法createScreenCapture一個獲得一個任意大小的屏幕圖像(在這里是全屏圖像),而所謂的截圖就是在這個圖像上畫出一個矩形,再利用上面的方法獲得這部分的圖像,程序中的cf.setAlwaysOnTop(true)是必需的;看起來是在屏幕上截圖,其實只是在一個在一個內鑲有桌面背景的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主要是用來判別狀態。
* 文件的格式名是unname+數字編號,格式是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實現前台截屏
html2canvas項目的gitHub地址
html2canvas示例
html2canvas可以將HTML代碼塊進行截取,並生成快照形式的canvas,然後可以利用html5的下載功能提供圖片的下載介面,供用戶下載。
優點:前台技術,實現比較容易。
缺點:此項目使用了html5的技術,因此在對IE的兼容上,只可以在IE9+的版本上使用。
使用時,需要引用jQuery.js和html2canvas.js。(html2canvas.js可以在github上下載)
具體JavaScript代碼如下:
var canvas = function () {
html2canvas($("#chart"), {
onrendered: function (canvas) {
$("#class11").html(canvas);//將id為「class11」部分的代碼轉換為canvas
var type = 'png';//圖片類型為png
var imgData = canvas.toDataURL('png');//將圖片轉換為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('http://www.w3.org/1999/xhtml', '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 = 'fe_' + (new Date()).getTime() + '.' + type; // 下載文件
saveFile(imgData, filename);
}
});

後台方式(java)
1. 利用html2image實現
html2image的地址(google)
html2image是可以識別html標簽並將html轉換成圖片的java項目。
優點:後台轉換,故對瀏覽器的版本基本沒有要求。
缺點:對樣式的識別不是很好,轉換出來的圖片比較簡單,基本沒有可以兼容的樣式。
使用方式:maven中引用如下依賴:
<dependency>
<groupId>com.github.xuwei-k</groupId>
<artifactId>html2image</artifactId>
<version>0.1.0</version></dependency>12345

2. 利用DJNativeSwing項目實現
純java代碼實現。使用DJNativeSwing這個項目,構建一個swing瀏覽器,打開網址,之後截取圖片。(需要eclipse的swt庫支持)
優點:純java實現。
缺點:需要多線程的支持,只在控制台方式實現過(由於本人對於多線程的掌握較弱,目前沒有在spring項目中實現這個方法,求大神指導~~)
3. 利用phantomJs實現
phantomJs的GitHub地址
phantomJs官網
phantom利用的是webKit內核,全面支持web而不需瀏覽器支持,快速,原生支持各種Web標准。
優點:速度快,使用簡單。
缺點:需要在項目的伺服器端引用exe文件進行截圖,並發性能有待考證。

Ⅸ 如何以JAVA實現網頁截圖技術

事實上,如果您想以Java實現網頁截圖,也就是「輸入一段網址,幾秒鍾過後就能截取一張網頁縮略圖」的效果。那麼,您至少有3種方式可以選擇。

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

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

優勢:簡單易用,不需要任何第三方插件。

缺點:不能同時處理大量數據,技術含量過低,屬於應急型技巧。

實現方法:使用如下代碼即可。

public static void main(String[] args) throws MalformedURLException,
IOException, URISyntaxException, AWTException {
//此方法僅適用於JdK1.6及以上版本
Desktop.getDesktop().browse(
new URL("http://google.com/intl/en/").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

Ⅹ java截屏如何把滑鼠箭頭截進去

先把滑鼠移動到需要的地方。打開java,使用快捷鍵Ctrl+Alt+A,這樣可以在屏幕上的任何地方截屏,右鍵選中截圖「另存為」,還可以在截屏圖片上做一些簡單的注釋和處理,還可以將滑鼠箭頭截取進去。

熱點內容
pb級kv存儲 發布:2024-05-18 01:47:30 瀏覽:820
免費加密狗 發布:2024-05-18 01:47:16 瀏覽:282
安卓手機如何把視頻變成實況 發布:2024-05-18 00:57:35 瀏覽:799
如何禁止緩存後台進程 發布:2024-05-18 00:57:12 瀏覽:171
c語言中安 發布:2024-05-18 00:39:59 瀏覽:450
資料庫建設書 發布:2024-05-18 00:39:17 瀏覽:826
破解壓縮包解壓密碼 發布:2024-05-18 00:34:57 瀏覽:840
網頁java代碼在線編譯 發布:2024-05-18 00:29:49 瀏覽:925
路由器編程器固件 發布:2024-05-18 00:13:41 瀏覽:255
家庭千兆搭建伺服器 發布:2024-05-18 00:11:39 瀏覽:610