首页 > 后端开发 > 正文

java截屏有哪几种方法(设计java程序在屏幕输出:今天是某年某月某天星期几,将程序和运行结果截图上传?)

2024-04-23 03:50:17 | 我爱编程网

今天我爱编程网小编为大家带来了java截屏有哪几种方法(设计java程序在屏幕输出:今天是某年某月某天星期几,将程序和运行结果截图上传?),希望能帮助到大家,一起来看看吧!

本文目录一览:

java截屏有哪几种方法(设计java程序在屏幕输出:今天是某年某月某天星期几,将程序和运行结果截图上传?)

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('

', '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 = 'baidufe_' + (new Date()).getTime() + '.' + type; // 下载文件

saveFile(imgData, filename);

}

});

后台方式(java)

1. 利用html2image实现

html2image的地址(google)

html2image是可以识别html标签并将html转换成图片的java项目。

优点:后台转换,故对浏览器的版本基本没有要求。

缺点:对样式的识别不是很好,转换出来的图片比较简单,基本没有可以兼容的样式。

使用方式:maven中引用如下依赖:

com.github.xuwei-k

html2image

0.1.012345

2. 利用DJNativeSwing项目实现

纯java代码实现。使用DJNativeSwing这个项目,构建一个swing浏览器,打开网址,之后截取图片。(需要eclipse的swt库支持)

优点:纯java实现。

缺点:需要多线程的支持,只在控制台方式实现过(由于本人对于多线程的掌握较弱,目前没有在spring项目中实现这个方法,求大神指导~~)

3. 利用phantomJs实现

phantomJs的GitHub地址

phantomJs官网

phantom利用的是webKit内核,全面支持web而不需浏览器支持,快速,原生支持各种Web标准。

优点:速度快,使用简单。

缺点:需要在项目的服务器端引用exe文件进行截图,并发性能有待考证。

java截屏有哪几种方法(设计java程序在屏幕输出:今天是某年某月某天星期几,将程序和运行结果截图上传?)

设计java程序在屏幕输出:今天是某年某月某天星期几,将程序和运行结果截图上传?

1.使用java.util.Date类做:

import java.util.Date;

public class test {

public static void main(String[] args) {

Date dt = new Date();

int year = dt.getYear() + 1900; //getYear()返回的是1900年距今多少年,故如果想获取准确年份,必须加上1900

int month = dt.getMonth() + 1; //getMonth()返回的是0-11的数,故必须要加1

int week = dt.getDate();

int day = dt.getDay(); //getDay()返回的是0-6之间的数,所以后面要跟判断

String weekShow="";

if (day==0) {

weekShow="星期日";

}else if (day==1) {

weekShow="星期一";

}else if (day==2) {

weekShow="星期二";

}else if (day==3) {

weekShow="星期三";

}else if (day==4) {

weekShow="星期四";

}else if (day==5) {

weekShow="星期五";

}else if (day==6) {

weekShow="星期六";

}

System.out.println("今天是"+year+"年"+month+"月"+week+"日"+weekShow+"!");

}

}

2.使用java.util.Calendar类

import java.util.Calendar;

import java.util.Scanner;

public class test{

public static void main(String[] args) {

Calendar c = Calendar.getInstance();

int year = c.get(Calendar.YEAR);

int month =c.get(Calendar.MONTH) + 1; //Calendar.MONTH返回的是0-11的数,故必须要加1

int week = c.get(Calendar.DATE);

int day = c.get(Calendar.DAY_OF_WEEK);

String weekShow="";

if (day==0) {

weekShow="星期日";

}else if (day==1) {

weekShow="星期一";

}else if (day==2) {

weekShow="星期二";

}else if (day==3) {

weekShow="星期三";

}else if (day==4) {

weekShow="星期四";

}else if (day==5) {

weekShow="星期五";

}else if (day==6) {

weekShow="星期六";

}

System.out.println("今天是"+year+"年"+month+"月"+week+"日"+weekShow+"!");

}

}

java截屏有哪几种方法(设计java程序在屏幕输出:今天是某年某月某天星期几,将程序和运行结果截图上传?)

java 实现截屏!

我爱编程网(https://www.52biancheng.com)小编还为大家带来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截屏有哪几种方法(设计java程序在屏幕输出:今天是某年某月某天星期几,将程序和运行结果截图上传?)相关内容,想要了解更多信息,敬请查阅我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“java截屏有哪几种方法(设计java程序在屏幕输出:今天是某年某月某天星期几,将程序和运行结果截图上传?)”相关推荐
php代码怎么获取今天是星期几
php代码怎么获取今天是星期几

Date()PHP中的格式字串在PHP中,Date()函数提供了丰富的格式化字符串选项,以适应各种日期和时间的输出需求。以下是一些关键格式的简要说明:-d:月份中的第几天,带前导零,如"01"到"31"。-D:星期的文本表示,如"Mon"到"Sun"。-j:月份中的第几天,不带前导零,从"1"到"31"。-l或L:星期几的完整文本,如"Sunday"到"Saturda

2024-11-01 18:09:12
用java程序怎么修改屏幕分辨率呢?
用java程序怎么修改屏幕分辨率呢?

java编写的程序窗口显示有问题特别小(citespace)WIN10高分辨率,导致程序窗口变小.解决方案一:调节WIN10的显示设置,对大多数的应用程序等都有效果桌面上右键单击--->选择显示设置--->方法1:可以选择更改文本,应用项目大小,比如选择150%程序窗口会变大--->方法2:可以把分辨率调小比如1920*1080调节成1

2024-05-30 20:13:26
服务器上如何运行Java程序?这个程序主要是监听某个端口是否有信息的?打包->上传->命令行运行?
服务器上如何运行Java程序?这个程序主要是监听某个端口是否有信息的?打包->上传->命令行运行?

服务器上如何运行Java程序?这个程序主要是监听某个端口是否有信息的?打包->上传->命令行运行?1.先安装j2sdk我安装路径是:D:\ProgramFiles\Java\j2sdk2.再安装eclipseEclipse是绿色软件,不需要安装,把下载回来的eclipse压缩包解压就可以了我安装的路径是:D:\ProgramFiles\Java\eclipse3.安装

2024-03-17 01:37:16
java程序运行结果是什么?
java程序运行结果是什么?

java程序运行结果是什么?classAnimal{publicAnimal(){super();System.out.println("我是动物");}}classCatextendsAnimal{Cat(){super();System.out.println("我是猫");}}classPersiaCatextendsCat{publicPersiaCat(){super();Syst

2024-05-30 00:05:46
下面java程序的运行结果 java求以下程序的运行结果
下面java程序的运行结果 java求以下程序的运行结果

java求以下程序的运行结果第一题是s=2+4+6=12考察do……while循环体和continue第二题是求数组中3的倍数的和,30+60+90=180第三题是考察try……catch语句的运用。定义了5个长度的数组,却在第十一个位置添加元素,导致数组越界。因此输出:“超出数组范围!*****异常处理结束!”以下Java程序的运行结果是()。C.运行正常,没

2024-06-30 17:31:11
运行java程序解释 关于JAVA程序的注释和运行结果
运行java程序解释 关于JAVA程序的注释和运行结果

JAVA程序详细解释这是一个,求解问题。从字符串s中,求出其中包含有多少个sToFind。按照上面的例子,就是在sunjavahpjavahjsdhjjavadsjhjjavadsjjava中,计算含有多少个java子串。count负责记录一共有多少个子串。index负责记录每一次寻找开始时,字符串开始的位置。循环外面的s=s.substring(index+sT

2024-03-23 16:14:02
php语言判断函数 PHP设计一个判断某年是否是闰年的函数然后调用输出结果?
php语言判断函数 PHP设计一个判断某年是否是闰年的函数然后调用输出结果?

PHP设计一个判断某年是否是闰年的函数然后调用输出结果?<?php$year=mt_rand(1900,2200);//从1900年到2200,可以自己改,也可以给一个定值。if($year%100==0){//判断世纪年if($year%400==0&&$year%3200!=0){echo"世纪年".$year."是闰年!";//世纪年里的闰年}

2025-01-17 08:06:27
如图,写出两个Java程序的运行结果,拜托了 编写两个java程序.
如图,写出两个Java程序的运行结果,拜托了 编写两个java程序.

如图,写出两个Java程序的运行结果,拜托了第一个程序:public class Test {    static int x = 5;    public static void methodA() {        x = x + 5;        System.out.println("x in methodA() = " + x);    }    public static

2024-06-25 20:51:58