package cn.iamsese.prj.db.helper;
import java.awt.AWTException;
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 java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import javax.imageio.ImageIO;
interface ImageType {
public final static String JPG = "JPG" ;
public final static String PNG = "PNG" ;
public final static String GIF = "GIF" ;
}
/**
* 屏幕截取 类
* 参考 http://www.iteye.com/topic/289052 实现
* cn.iamsese.prj.db.helper
* Author: vb2005xu [JAVA菜鸟]
*/
public class ScreenDumpHelper {
/** ScreenDumpHelper 静态对象*/
private static ScreenDumpHelper defaultScreenDumpHelper ;
/**
* 返回 ScreenDumpHelper 类的 单态实例
* @return ScreenDumpHelper
*/
public static ScreenDumpHelper getDefaultScreenDumpHelper(){
if (defaultScreenDumpHelper == null)
return new ScreenDumpHelper();
return defaultScreenDumpHelper ;
}
/**
* 构造函数中设置 截屏区域的默认值 -- 缺省为全屏
*/
public ScreenDumpHelper(){
Dimension dime = Toolkit.getDefaultToolkit().getScreenSize();
this.setScreenArea(new Rectangle(dime));
}
/**
*设置截屏的范围
*/
private Rectangle screenArea ;
public Rectangle getScreenArea() {
return this.screenArea;
}
public void setScreenArea(Rectangle screenArea) {
this.screenArea = screenArea;
}
public void setScreenArea(int x, int y , int width, int height) {
this.screenArea = new Rectangle(x,y,width,height);
}
/**
* 返回一个 BufferedImage
* @return
* @throws AWTException
*/
private BufferedImage getBufferedImage() throws AWTException{
BufferedImage imgBuf = null ;;
imgBuf = ( new Robot() ).createScreenCapture(this.getScreenArea());
return imgBuf ;
}
/**
* 将 图像数据写到 输出流中去,方便再处理
* @param fileFormat
* @param output
* @return
*/
public boolean saveToOutputStream(String fileFormat,OutputStream output){
try {
ImageIO.write(this.getBufferedImage(), fileFormat, output) ;
} catch (AWTException e) {
return false ;
//e.printStackTrace();
} catch (IOException e) {
return false ;
//e.printStackTrace();
}
return true ;
}
/**
* 根据文件格式 返回随机文件名称
* @param fileFormat
* @return
*/
public String getRandomFileName(String fileFormat){
return "screenDump_" + (new Date()).getTime() + "." + fileFormat ;
}
/**
* 抓取 指定区域的截图 到指定格式的文件中 -- 这个函数是核心,所有的都是围绕它来展开的
* * 图片的编码并不是以后缀名来判断:
* 比如s.jpg 如果其采用png编码,那么这个图片就是png格式的
* @param fileName
* @param fileFormat
* @return boolean
*/
public boolean saveToFile(String fileName,String fileFormat){
if (fileName == null)
fileName = getRandomFileName(fileFormat) ;
try {
FileOutputStream fos = new FileOutputStream(fileName);
this.saveToOutputStream(fileFormat, fos);
} catch (FileNotFoundException e) {
System.out.println("非常规文件或不能创建抑或覆盖此文件: " + fileName);
e.printStackTrace();
}
return true ;
}
/**
* 抓取 指定 Rectangle 区域的截图 到指定格式的文件中
* @param fileName
* @param fileFormat
* @param screenArea
* @return
*/
public boolean saveToFile(String fileName,String fileFormat,Rectangle screenArea){
this.setScreenArea(screenArea);
return this.saveToFile(fileName,fileFormat);
}
/**
* 抓取 指定区域的截图 到指定格式的文件中
* @param fileName
* @param fileFormat
* @param x
* @param y
* @param width
* @param height
*/
public boolean saveToFile(String fileName,String fileFormat,int x, int y , int width, int height){
this.setScreenArea(x,y,width,height);
return this.saveToFile(fileName, fileFormat);
}
/**
* 将截图使用 JPG 编码
* @param fileName
*/
public void saveToJPG(String fileName){
this.saveToFile(fileName, ImageType.JPG);
}
public void saveToJPG(String fileName,Rectangle screenArea){
this.saveToFile(fileName, ImageType.JPG,screenArea);
}
public void saveToJPG(String fileName,int x, int y , int width, int height){
this.saveToFile(fileName, ImageType.JPG,x,y,width,height);
}
/**
* 将截图使用 PNG 编码
* @param fileName
*/
public void saveToPNG(String fileName){
this.saveToFile(fileName, ImageType.PNG);
}
public void saveToPNG(String fileName,Rectangle screenArea){
this.saveToFile(fileName, ImageType.PNG,screenArea);
}
public void saveToPNG(String fileName,int x, int y , int width, int height){
this.saveToFile(fileName, ImageType.PNG,x,y,width,height);
}
public void saveToGIF(String fileName){
throw new UnsupportedOperationException("不支持保存到GIF文件");
//this.saveToFile(fileName, ImageType.GIF);
}
/**
* @param args
*/
public static void main(String[] args) {
for(int i = 0 ; i < 5 ; i ++)
ScreenDumpHelper.getDefaultScreenDumpHelper().saveToJPG(null,i*150,i*150,400,300);
}
}
截取图片如下:
- 大小: 27.6 KB
- 大小: 25.4 KB
- 大小: 29.2 KB
- 大小: 26.3 KB
- 大小: 14 KB
分享到:
相关推荐
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代
内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
系统可以提供信息显示和相应服务,其管理新冠抗原自测平台小程序信息,查看新冠抗原自测平台小程序信息,管理新冠抗原自测平台小程序。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7 小程序开发工具:hbuildx/微信开发者工具
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
新建 文本文档.docx
hw06
3. Kafka入门-安装与基本命令
燃气管道施工资质和特种设备安装改造维修委托函.docx
AI大模型研究相关报告
lab02
仅供学习使用,其他用途请购买正版资源AVPro Video Core Windows Edition 2.2.3 亲测可用的视频播放插件,能丝滑播放透明视频等.
建设工程消防验收现场指导意见表.docx
MVIMG_20241222_194113.jpg
五相电机双闭环矢量控制模型_采用邻近四矢量SVPWM_MATLAB_Simulink仿真模型包括: (1)原理说明文档(重要):包括扇区判断、矢量作用时间计算、矢量作用顺序及切时间计算、PWM波的生成; (2)输出部分仿真波形及仿真说明文档; (3)完整版仿真模型:包括邻近四矢量SVPWM模型和完整双闭环矢量控制Simulink模型; 资料介绍过程十分详细,零基础手把手教学,资料已经写的很清楚
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7