A. java如何實現截圖功能
下面給你介紹將全屏幕截圖保存到指定目錄下的代碼,希望能對你有幫助:
核心代碼為:snapShot方法中的相關邏輯
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; //截圖名稱後面的數字累加
private String imageFormat; // 圖像文件的格式
private String defaultImageFormat = "png"; //截圖後綴
Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); //獲取全屏幕的寬高尺寸等數據
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++;
// 根據文件前綴變數和文件格式變數,自動生成文件名
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> // 配合前端頁面上面的選擇尺寸等邏輯,傳到後台,即可實現自由選擇截圖區域和大小的截圖<br>
public static void main(String[] args) {
CameraTest cam = new CameraTest("d:\\Hello", "png");//
cam.snapShot();
}
}
B. android 怎麼獲取當前屏幕的截圖
安卓系統手機操作系統相似,以華為手機為例,以下截屏方法您可以試一下:
一、屏幕下拉出現「開關」毀李,點擊「截屏」即可截圖成功(如默認快捷開關沒有截屏選項,需要點擊編輯添加後方能使用)。
二、「截圖」快捷鍵:同時按住「音量減」和「電源鍵」也可以實現截圖。
三、通過指關節截屏:
1、截取完整屏幕:亮屏狀態下連續態乎敲擊屏幕兩纖閉遲下待彈窗自動退出即可完成截屏。
2、截取部分屏幕:亮屏狀態下連續敲擊屏幕兩下,彈窗出現三秒內點擊編輯,拖拽圖片邊框即可完成截屏。
3、畫字母S滾動截屏:先用指關節敲擊一下屏幕,然後不要離開屏幕,直接用指關節畫字母S,點擊滾動區域後完成截屏。
截屏成功後,圖片文件默認保存在手機存儲的Pictures/Screenshots文件夾下,也可以通過手機自帶的圖庫查看。
C. 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文件進行截圖,並發性能有待考證。
D. 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) {}
}
}
E. java截屏如何把滑鼠箭頭截進去
先把滑鼠移動到需要的地方。打開java,使用快捷鍵Ctrl+Alt+A,這樣可以在屏幕上的任何地方截辯判消屏,右鍵選中截圖「另存為」,還可以在截屏圖片上做一些簡沖悔單的注攜知釋和處理,還可以將滑鼠箭頭截取進去。
F. Android 截屏的三種方法
執行「su」命令,需要設置為系統程序,android:sharedUserId="android.uid.system",需要root許可權。
方法如下:
否則會報
java.io.IOException: Cannot run program : error=13, Permission denied
優缺點:命令行簡單方便,對於復雜的頁面或存在幀流(surfaceView等控制項)也能輕松獲取截屏,但是運行到手機上,由於硬體限制,系統許可權基本難拿到,容易出異困昌常而導致方法失效,因此該方法依硬體許可權按需取
優缺點:原生的截圖方此尺和法,依賴於界面的內容,如果界面中包含webView、surfaceView等控制項,截圖出來該控制項區域出現一片黑,無法達到截圖到幀的效果。因此該方法按界面控制項按需取。
優缺點:完美地解決了方法一、方法二存在的問題,完美!無需root許可權,不用考慮界面中surfaceView等控制項渲染問題。但是只能獲取到當前APP內部正在運行Activity的截圖,如果需要多個界面截圖,最好在BaseActivity使用。如果需要獲取APP外部界面截圖,可通過讀取framebuffer內容,解析圖片。
每天進步一點點。森盯。。(2020-07-09)
G. Appium+Java自動化測試 android混合APP的webview頁面截圖怎麼截
先切回原生頁面在進行截圖
Drivername.context("NATIVE_APP");
H. 本人想實現java電腦伺服器端socket實時發送屏幕截圖到安卓手機顯示(源源不斷),但現在傳輸效
那你就要有個伺服器,速度夠快,你獲取到的屏幕都能很快的存儲到伺服器上,用手機進去你的伺服器就可以看了,如果你想直接通過伺服器下載到手機那最低高宴敏也要2秒左右'最快的就是直接進戚枝祥帆入伺服器用手機監視看
I. appium怎樣利用java進行截圖
public class ContactsTest {
18 private AppiumDriver driver;
19 @Before
20 public void setUp() throws Exception {
21 //設置apk的路徑
22 File classpathRoot = new File(System.getProperty("user.dir"));
23 File appDir = new File(classpathRoot, "apps");
24 File app = new File(appDir, "ContactManager.apk");
25
26 //設置自動化相關參數
27 DesiredCapabilities capabilities = new DesiredCapabilities();
28 capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
29 capabilities.setCapability("platformName", "Android");
30 capabilities.setCapability("deviceName", "Android Emulator");
31
32 //設置安卓系統版本
33 capabilities.setCapability("platformVersion", "4.3");
34 //設置apk路徑
35 capabilities.setCapability("app", app.getAbsolutePath());
36
37 //設置app的主包名和主類名
38 capabilities.setCapability("appPackage", "com.example.android.contactmanager");
39 capabilities.setCapability("appActivity", ".ContactManager");
40
41 //初始化
42 driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
43 }
44
45 @Test
46 public void addContact(){
47 WebElement el = driver.findElement(By.name("Add Contact"));
48 el.click();
49 List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");
50 textFieldsList.get(0).sendKeys("Some Name");
51 textFieldsList.get(2).sendKeys("[email protected]");
52 driver.swipe(100, 500, 100, 100, 2);
53 driver.findElementByName("Save").click();
54 }
55
56 @After
57 public void tearDown() throws Exception {
58 driver.quit();
59 }
60 }
J. 安卓手機怎麼截屏的有哪4種方法
方法和種類如下:
一、快捷組合鍵截圖
安卓智能手機,自然最為通用的截屏方法就是同時按住【電源鍵】+【音量-】鍵,當聽到咔的一聲說明截屏成功。
截屏是一種截取圖片或文字的途徑,也是一種計算機運用技術。
通過這種技術可以從網上截取下自己感興趣的文章圖片供自己使用觀看,可以幫助人們更好的去理解使用知識。
是一種人人都能使用並且學會方法。可以通過一些軟體實現截屏功能。
安卓手機截圖成功後,圖片會被保存在媒體庫中。截屏後,只需要打開媒體庫就可以找到剛才截取的屏幕圖像了。
這個功能對於游戲玩家在不退出遊戲的情況下可以很方便地截取游戲畫面。
電腦截圖方法:
1、直接按Print Screen,截取整個屏幕到剪切板;按Alt+Print Screen,可以截取當前活動窗口。
2、登陸QQ聊天軟體,按Ctrl+Alt+A再選擇要截下的區域,可以另存為,也可以選擇直接保存到剪切板。