代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
Java调用摄像头
作者:
Fitzgerald
/ 发布于
2016/3/15
/
704
这是采用fmj框架在Windows下调用摄像头的小例子,因为依赖的dll是32位的,所以只能用32位的JDK才能正常运行。我在这个聊天程序中有使用。下载地址:http://download.csdn.net/detail/onlyxiahui/9455632
package com.only.video; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.FlowLayout; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.UIManager; public class CameraFrame extends JFrame { /** * */ private static final long serialVersionUID = 1L; CameraVideoPanel cameraVideoPanel = new CameraVideoPanel(); private List<VideoFrame> frameList = new ArrayList<VideoFrame>(); public CameraFrame() { this.setTitle("摄像头应用"); this.setSize(480, 500); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel buttonPanel = new JPanel(new FlowLayout()); this.getContentPane().setLayout(new BorderLayout()); this.getContentPane().add(cameraVideoPanel, BorderLayout.CENTER); this.getContentPane().add(buttonPanel, BorderLayout.SOUTH); JButton selectButton = new JButton("选择摄像头"); buttonPanel.add(selectButton); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String m = cameraVideoPanel.chooseDevice(); cameraVideoPanel.setMediaLocator(m); } }); JButton startButton = new JButton("开始"); buttonPanel.add(startButton); startButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println(cameraVideoPanel.startVideo()); } }); JButton stopButton = new JButton("停止"); buttonPanel.add(stopButton); stopButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cameraVideoPanel.stopVideo(); } }); JButton addButton = new JButton("添加"); buttonPanel.add(addButton); addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { add(); } }); JButton deletButton = new JButton("删除"); buttonPanel.add(deletButton); deletButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { delete(); } }); new ImageThread().start(); } private void add() { VideoFrame videoFrame = new VideoFrame(); videoFrame.setVisible(true); frameList.add(videoFrame); } private void delete() { if (!frameList.isEmpty()) { VideoFrame videoFrame = (VideoFrame) frameList.remove(0); if (null != videoFrame) { videoFrame.setVisible(false); } } } public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception ex) { java.util.logging.Logger.getLogger(CameraFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } String dllpath = "dll"; SystemUtil.addLibPath(dllpath); // System.loadLibrary("CameraFrame"); CameraFrame camera = new CameraFrame(); camera.setVisible(true); } /** * 这是模拟把视频信息发送出去,如视频聊天 * @Author: XiaHui * @Date: 2016年3月8日 * @ModifyUser: XiaHui * @ModifyDate: 2016年3月8日 */ class ImageThread extends Thread { public void run() { while (true) { try { createImage(); sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } } public void createImage() { BufferedImage image = new BufferedImage(800, 480, BufferedImage.TYPE_INT_ARGB); Graphics2D g = image.createGraphics(); cameraVideoPanel.paint(g); g.dispose(); ImageIcon icon = new ImageIcon(); icon.setImage(image); for (VideoFrame vf : frameList) { vf.showImageIcon(icon); } } } class VideoFrame extends JFrame { private static final long serialVersionUID = 1L; JLabel label = new JLabel(); public VideoFrame() { this.setMinimumSize(new java.awt.Dimension(750, 520)); this.setResizable(false); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); this.setLayout(new CardLayout()); add(label); } public void showImageIcon(ImageIcon icon) { label.setIcon(icon); } } }
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
Fitzgerald
贡献的其它代码
(
3
)
.
Java调用摄像头
.
最大流无流量(邻接阵形式)
.
在类中淡入/动画图像
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3