日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
截屏代碼java 編程結(jié)果截屏

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

代碼如下

創(chuàng)新互聯(lián)建站是專業(yè)的淳安網(wǎng)站建設(shè)公司,淳安接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行淳安網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

[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

JAVA 截屏函數(shù)

有啊 核心提示:函數(shù)需要 uses Direct3D9,D3DX9; 偶然發(fā)現(xiàn)一個(gè)函數(shù)可以直接保存表面到文件1!所以修改了一下,函數(shù)為:...

procedure CaptureScreen(Const FileName: string);

var

BitsPerPixel: Byte;

pD3D: IDirect3D9;

pSurface: IDirect3DSurface9;

g_pD3DDevice: IDirect3DDevice9;

D3DPP: TD3DPresentParameters;

ARect: TRect;

LockedRect: TD3DLockedRect;

BMP: TBitmap;

i, p: Integer;

begin

BitsPerPixel := GetDeviceCaps(Canvas.Handle, BITSPIXEL);

FillChar(d3dpp, SizeOf(d3dpp), 0);

D3DPP.Windowed := True;

D3DPP.Flags := D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;

D3DPP.SwapEffect := D3DSWAPEFFECT_DISCARD;

D3DPP.BackBufferWidth := Screen.Width;

D3DPP.BackBufferHeight := Screen.Height;

D3DPP.BackBufferFormat := D3DFMT_X8R8G8B8;

pD3D := Direct3DCreate9(D3D_SDK_VERSION);

pD3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, GetDesktopWindow,

D3DCREATE_SOFTWARE_VERTEXPROCESSING, @D3DPP, g_pD3DDevice);

g_pD3DDevice.CreateOffscreenPlainSurface(Screen.Width, Screen.Height, D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, pSurface, nil);

g_pD3DDevice.GetFrontBufferData(0, pSurface);

// use D3D to save surface. Notes: D3DX%ab.dll is required!

// D3DXSaveSurfaceToFile('Desktop.bmp', D3DXIFF_BMP, pSurface, nil, nil);

// use Bitmap to save surface

ARect := Screen.DesktopRect;

pSurface.LockRect(LockedRect, @ARect, D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_NOSYSLOCK or D3DLOCK_READONLY);

BMP := TBitmap.Create;

BMP.Width := Screen.Width;

BMP.Height := Screen.Height;

case BitsPerPixel of

8: BMP.PixelFormat := pf8bit;

16: BMP.PixelFormat := pf16bit;

24: BMP.PixelFormat := pf24bit;

32: BMP.PixelFormat := pf32bit;

end;

p := Cardinal(LockedRect.pBits);

for i := 0 to Screen.Height - 1 do

begin

CopyMemory(BMP.ScanLine[i], Ptr(p), Screen.Width * BitsPerPixel div 8);

p := p + LockedRect.Pitch;

end;

BMP.SaveToFile(FileName);

BMP.Free;

pSurface.UnlockRect;

end;

procedure CaptureScreen(const FileName: string;Const FileType: TD3DXImageFileFormat);

var

pD3D: IDirect3D9;

pSurface: IDirect3DSurface9;

g_pD3DDevice: IDirect3DDevice9;

D3DPP: TD3DPresentParameters;

begin

FillChar(d3dpp, SizeOf(d3dpp), 0);

D3DPP.Windowed := True;

D3DPP.Flags := D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;

D3DPP.SwapEffect := D3DSWAPEFFECT_DISCARD;

D3DPP.BackBufferWidth := Screen.Width;

D3DPP.BackBufferHeight := Screen.Height;

D3DPP.BackBufferFormat := D3DFMT_X8R8G8B8;

pD3D := Direct3DCreate9(D3D_SDK_VERSION);

pD3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, GetDesktopWindow,

D3DCREATE_SOFTWARE_VERTEXPROCESSING, @D3DPP, g_pD3DDevice);

g_pD3DDevice.CreateOffscreenPlainSurface(Screen.Width, Screen.Height, D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, pSurface, nil);

g_pD3DDevice.GetFrontBufferData(0, pSurface);

D3DX9.D3DXSaveSurfaceToFile(PChar(FileName),FileType,pSurface,nil,nil);

pSurface := nil;

g_pD3DDevice := nil;

pD3D := nil;

end;

傳遞兩個(gè)參數(shù),第一個(gè)參數(shù)指定為文件名,第二個(gè)參數(shù)指定為文件類型

支持7種類型

_D3DXIMAGE_FILEFORMAT = (

D3DXIFF_BMP {= 0},

D3DXIFF_JPG {= 1},

D3DXIFF_TGA {= 2},

D3DXIFF_PNG {= 3},

D3DXIFF_DDS {= 4},

D3DXIFF_PPM {= 5},

D3DXIFF_DIB {= 6}

);

再給一個(gè)使用dX8實(shí)現(xiàn)的,上面給的是用Dx9實(shí)現(xiàn)的函數(shù)

procedure CaptureScreen(const FileName: string;Const FileType: TD3DXImageFileFormat);

var

pD3D: IDirect3D8;

pSurface: IDirect3DSurface8;

g_pD3DDevice: IDirect3DDevice8;

D3DPP: TD3DPresentParameters;

begin

FillChar(d3dpp, SizeOf(d3dpp), 0);

D3DPP.Windowed := True;

D3DPP.Flags := D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;

D3DPP.SwapEffect := D3DSWAPEFFECT_DISCARD;

D3DPP.BackBufferWidth := Screen.Width;

D3DPP.BackBufferHeight := Screen.Height;

D3DPP.BackBufferFormat := D3DFMT_X8R8G8B8;

pD3D := Direct3DCreate8(D3D_SDK_VERSION);

pD3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, GetDesktopWindow,

D3DCREATE_SOFTWARE_VERTEXPROCESSING, D3DPP, g_pD3DDevice);

g_pD3DDevice.CreateImageSurface(Screen.Width, Screen.Height, D3DFMT_A8R8G8B8, pSurface);

g_pD3DDevice.GetFrontBuffer(pSurface);

D3DX8.D3DXSaveSurfaceToFile(PChar(FileName),FileType,pSurface,nil,nil);

pSurface := nil;

g_pD3DDevice := nil;

pD3D := nil;

end;

再給一個(gè)直接使用系統(tǒng)GDI實(shí)現(xiàn)的抓屏

procedure CaptureScreen(const FileName: string);overload;

var

nScreenWidth,nScreenHeight: integer;

ScreenDc,hCaptureDC: HDC;

bmp: TBitmap;

begin

nScreenWidth := GetSystemMetrics(SM_CXSCREEN);

nScreenHeight := GetSystemMetrics(SM_CYSCREEN);

ScreenDc := GetDC(GetDesktopWindow);

hCaptureDC := CreateCompatibleDC(ScreenDc);

bmp := TBitmap.Create;

bmp.Handle :=CreateCompatibleBitmap(ScreenDc,nScreenWidth, nScreenHeight);

SelectObject(hCaptureDC,bmp.Handle);

BitBlt(hCaptureDC,0,0,nScreenWidth,nScreenHeight,ScreenDc,0,0,SRCCOPY);

bmp.SaveToFile(fileName);

ReleaseDC(GetDesktopWindow,ScreenDc);

DeleteDC(hCaptureDC);

bmp.Free;

end;

通過(guò)上面這一步,我們可以很容易聯(lián)想到用來(lái)抓取任何一個(gè)控件的表面圖象,函數(shù)如下:

procedure CaptureControl(Control: TWinControl;const FileName: string);overload;

var

ControlWidth,ControlHeight: integer;

ControlDc,hCaptureDC: HDC;

bmp: TBitmap;

begin

ControlWidth := Control.ClientWidth;

ControlHeight := Control.ClientHeight;

ControlDc := GetDC(Control.Handle);

hCaptureDC := CreateCompatibleDC(ControlDc);

bmp := TBitmap.Create;

bmp.Handle :=CreateCompatibleBitmap(ControlDc,ControlWidth,ControlHeight);

SelectObject(hCaptureDC,bmp.Handle);

BitBlt(hCaptureDC,0,0,ControlWidth,ControlHeight,ControlDc,0,0,SRCCOPY);

bmp.SaveToFile(fileName);

ReleaseDC(GetDesktopWindow,ControlDc);

DeleteDC(hCaptureDC);

bmp.Free;

end;

java 禁止截屏鍵

在安卓ANDROID開(kāi)發(fā)中,有些內(nèi)容或文檔是為防止知識(shí)產(chǎn)權(quán),防信息外泄,需要做一些保護(hù)措施,Android中如何禁止用戶截屏,防止截圖java代碼

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

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

或:

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

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

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

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

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

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

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

缺點(diǎn):不能同時(shí)處理大量數(shù)據(jù),技術(shù)含量過(guò)低,屬于應(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++組件

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

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

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

java 實(shí)現(xiàn)截屏!

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

附上代碼:

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主要是用來(lái)判別狀態(tài)。

* 文件的格式名是unname+數(shù)字編號(hào),格式是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,以便重新開(kāi)始截圖。

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) {}

}

}


分享標(biāo)題:截屏代碼java 編程結(jié)果截屏
網(wǎng)頁(yè)地址:http://www.dlmjj.cn/article/hiohpd.html