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再选择要截下的区域,可以另存为,也可以选择直接保存到剪切板。