java:截屏并保存为jpg格式

在写projet时,软件有一个功能是截取屏幕之后,可以将截取的图片保存成jpg或pdf格式。
java有自带的截屏函数:import java.awt.Robot;在Robot库里有个createScreenCapture(),它接受一个Rectangle对象作为参数,Rectangle对象的四个参数分别是截取的屏幕的左上角x,y坐标值,截取的矩形的宽和高。主要代码如下:

Robot robot = new Robot();
try {
    BufferedImage img = robot.createScreenCapture(new Rectangle(startX,
            startY, w, h)); //screen capture, screenshot
    ImageIO.write(img, "JPG","文件保存路径");//第三个参数是File类型
} catch (IllegalArgumentException e) {
    e.printStackTrace();
}

保存文件用到文件选择对话框JFileChooser,几个主要的方法:

  • setDialogType(): 设置对话框类型,参数可选择JFileChooser.OPEN_DIALOG或者JFileChooser.SAVE_DIALOG
  • showSaveDialog():显示对话框类型为“保存”
  • getSelectedFile():得到用户要保存的文件路径,这里有用户输入的文件名,返回值是File类型

用户输入的文件名有可能是包含后缀的,也有可能不要包含,或者后缀名是错的,程序需要判断并且保证后缀名有且正确。用下面这个函数可以判断。这个方法是我在《算法》书上看到的,做了相应的修改以适应我的projet。

//判断用户输入的文件名是否是要保存的类型
public static boolean judgeExtensionName(String fileName, String fileType){
    int dot = fileName.indexOf(".");
    String extensionName = fileName.substring(dot+1, fileName.length());//得到后缀
    if (extensionName.toLowerCase().equals(fileType)) {
        return true;
    }else{          
        return false;
    }
}

然后在下面的代码里调用这个函数,将截取的图片保存成jpg格式。

public static void saveFileAsJPG(){
    JFileChooser fc = new JFileChooser();
    fc.setDialogTitle("Save Files");
    fc.setDialogType(JFileChooser.SAVE_DIALOG);
    FileNameExtensionFilter filterImage = new FileNameExtensionFilter(
              "JPG", ".jpg");              
    fc.addChoosableFileFilter(filterImage);            
    int result = fc.showSaveDialog(null);
    if (result == JFileChooser.APPROVE_OPTION) {
        File saveFile = fc.getSelectedFile();//get file's name entered by user
        if(!judgeExtensionName(saveFile.toString(), "jpg")){
            saveFile = new File(saveFile.toString() + ".jpg");
        }
        try {
            ScreenCapture.draggedScreen(saveFile);//截屏并保存图片的函数
        } catch (Exception ex) {
            ex.printStackTrace();
        }
       }
    }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值