java的springboot项目(若依前后端分离)利用webcam-capture调用照相机照相,并保存照片

简介: java的springboot项目(若依前后端分离)利用webcam-capture调用照相机照相,并保存照片

@[TOC]

1.需要的依赖

        <dependency>
            <groupId>com.github.sarxos</groupId>
            <artifactId>webcam-capture</artifactId>
            <version>0.3.12</version>
        </dependency>

2.新建CameraUtils工具类

package com.ruoyi.fangzhou.util;

import com.github.sarxos.webcam.Webcam;
import com.github.sarxos.webcam.WebcamPanel;
import com.github.sarxos.webcam.WebcamResolution;
import com.github.sarxos.webcam.WebcamUtils;
import com.github.sarxos.webcam.util.ImageUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

/**
 * 相机测试
 */
public class CameraUtils {
   
   

    public static final Logger logger = LoggerFactory.getLogger(CameraUtils.class);

    public static void openCamera() {
   
   
        //默认获取一个Webcam对象
        final Webcam webcam = Webcam.getDefault();
        //设置窗口大小
        webcam.setViewSize(WebcamResolution.VGA.getSize());
        //获取画板
        WebcamPanel panel = new WebcamPanel(webcam);
        //设置FPS显示
        panel.setFPSDisplayed(true);
        //设置debug日志
        panel.setDisplayDebugInfo(true);
        //设置显示图片尺寸
        panel.setImageSizeDisplayed(true);
        //设置镜像
        panel.setMirrored(true);

        //获取框架jdk
        JFrame window = new JFrame("照相机拍照");

        //框架中加入画板
        window.add(panel);
        //设置此帧是否可由用户调整大小
        window.setResizable(true);
        //调用任意已注册 WindowListener 的对象后自动隐藏并释放该窗体
        window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        //自适应窗口
        window.pack();
        //设置窗口可见
        window.setVisible(true);
        //设置监听事件
        window.addWindowListener(new WindowListener() {
   
   

            @Override
            public void windowOpened(WindowEvent e) {
   
   

            }

            @Override
            public void windowClosing(WindowEvent e) {
   
   

            }

            @Override
            public void windowClosed(WindowEvent e) {
   
   
                //关闭摄像头
                webcam.close();
            }

            @Override
            public void windowIconified(WindowEvent e) {
   
   

            }

            @Override
            public void windowDeiconified(WindowEvent e) {
   
   

            }

            @Override
            public void windowActivated(WindowEvent e) {
   
   

            }

            @Override
            public void windowDeactivated(WindowEvent e) {
   
   

            }


        });

        final JButton button = new JButton("拍照");
        window.add(panel, BorderLayout.CENTER);
        window.add(button, BorderLayout.SOUTH);
        window.setResizable(true);
        window.pack();
        window.setVisible(true);
        button.addActionListener(new ActionListener() {
   
   
            public void actionPerformed(ActionEvent e)
            {
   
   

                button.setEnabled(false);  //设置按钮不可点击

                //实现拍照保存-------start
                String fileName = "E://picture//" + System.currentTimeMillis();       //保存路径即图片名称(不用加后缀)
                WebcamUtils.capture(webcam, fileName, ImageUtils.FORMAT_PNG);
                SwingUtilities.invokeLater(new Runnable() {
   
   

                    @Override
                    public void run()
                    {
   
   
                        JOptionPane.showMessageDialog(null, "拍照成功");
                        button.setEnabled(true);    //设置按钮可点击

                        return;
                    }
                });
                //实现拍照保存-------end

            }
        });
    }
}

3 main方法测试

public static void main(String[] args) {
   
   
        CameraUtils.openCamera();
    }

结果很好用!
在这里插入图片描述

目录
相关文章
|
3天前
|
IDE 安全 Java
Lombok 在企业级 Java 项目中的隐性成本:便利背后的取舍之道
Lombok虽能简化Java代码,但其“魔法”特性易破坏封装、影响可维护性,隐藏调试难题,且与JPA等框架存在兼容风险。企业级项目应优先考虑IDE生成、Java Records或MapStruct等更透明、稳健的替代方案,平衡开发效率与系统长期稳定性。
33 1
|
5天前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
5天前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
40 1
|
1月前
|
前端开发 Java API
2025 年 Java 全栈从环境搭建到项目上线实操全流程指南:Java 全栈最新实操指南(2025 版)
本指南涵盖2025年Java全栈开发核心技术,从JDK 21环境搭建、Spring Boot 3.3实战、React前端集成到Docker容器化部署,结合最新特性与实操流程,助力构建高效企业级应用。
405 1
|
1月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
295 63
|
2月前
|
Java 测试技术 Spring
简单学Spring Boot | 博客项目的测试
本内容介绍了基于Spring Boot的博客项目测试实践,重点在于通过测试驱动开发(TDD)优化服务层代码,提升代码质量和功能可靠性。案例详细展示了如何为PostService类编写测试用例、运行测试并根据反馈优化功能代码,包括两次优化过程。通过TDD流程,确保每项功能经过严格验证,增强代码可维护性与系统稳定性。
148 0
|
2月前
|
存储 Java 数据库连接
简单学Spring Boot | 博客项目的三层架构重构
本案例通过采用三层架构(数据访问层、业务逻辑层、表现层)重构项目,解决了集中式开发导致的代码臃肿问题。各层职责清晰,结合依赖注入实现解耦,提升了系统的可维护性、可测试性和可扩展性,为后续接入真实数据库奠定基础。
248 0
|
2月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
143 0
|
前端开发 Java Spring
Java:SpringBoot实现文件上传
Java:SpringBoot实现文件上传
333 0
|
前端开发 Java Spring
Java:SpringBoot实现文件上传
Java:SpringBoot实现文件上传
233 0