這篇文章主要介紹了java如何實(shí)現(xiàn)攝像頭截圖功能,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
蘄春網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,蘄春網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為蘄春上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的蘄春做網(wǎng)站的公司定做!具體內(nèi)容如下
本來(lái)sun有個(gè)jmf組件可以很方便的實(shí)現(xiàn)攝像頭截圖的,不過(guò)這版本后來(lái)停止更新了,當(dāng)前官網(wǎng)最新版本為Java Media Framework (JMF) 2.1.1e,下載回來(lái),在windows 7 32位上使用,居然不能運(yùn)行,網(wǎng)上另外找了個(gè)jmf的替代框架fmj使用,截圖實(shí)現(xiàn)代碼:
package com.pengo.capture; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.media.MediaLocator; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import net.sf.fmj.ui.application.CaptureDeviceBrowser; import net.sf.fmj.ui.application.ContainerPlayer; import net.sf.fmj.ui.application.PlayerPanelPrefs; public class CameraFrame extends JFrame{ private static int num = 0; public CameraFrame() throws Exception{ this.setTitle("攝像頭截圖應(yīng)用"); this.setSize(480, 500); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JPanel cameraPanel = new JPanel(); this.getContentPane().setLayout(new BorderLayout()); this.getContentPane().add(cameraPanel, BorderLayout.CENTER); ContainerPlayer containerPlayer = new ContainerPlayer(cameraPanel); MediaLocator locator = CaptureDeviceBrowser.run(null); //彈出攝像頭設(shè)備選擇 // MediaLocator locator = null; // GlobalCaptureDevicePlugger.addCaptureDevices(); // Vector vectorDevices = CaptureDeviceManager.getDeviceList(null); // if (vectorDevices == null || vectorDevices.size() == 0) // { // System.out.println("沒(méi)有攝像頭==="); // return; // } // //選擇第一個(gè)攝像頭設(shè)備 // for ( int i = 0; i < vectorDevices.size(); i++ ) // { // CaptureDeviceInfo infoCaptureDevice = (CaptureDeviceInfo) vectorDevices.get(i); // System.out.println("設(shè)備名===============" + infoCaptureDevice.getName()); // //選擇第一個(gè)設(shè)備為程序使用,如果存在多個(gè)設(shè)備時(shí),則第一個(gè)可能不是攝像頭 // locator = infoCaptureDevice.getLocator(); // break; // } PlayerPanelPrefs prefs = new PlayerPanelPrefs(); containerPlayer.setMediaLocation(locator.toExternalForm(), prefs.autoPlay); JPanel btnPanel = new JPanel(new BorderLayout()); final JTextField path = new JTextField("E:\\camera"); path.setColumns(30); btnPanel.add(path, BorderLayout.WEST); JButton okBtn = new JButton("截圖"); okBtn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ Dimension imageSize = cameraPanel.getSize(); BufferedImage image = new BufferedImage(imageSize.width, imageSize.height, BufferedImage.TYPE_INT_ARGB); Graphics2D g = image.createGraphics(); cameraPanel.paint(g); g.dispose(); try { String filePath = path.getText(); File file = new File(filePath); if(file.exists() == false){ file.mkdirs(); } ImageIO.write(image, "png", new File(file.getAbsolutePath() + "/" + num + ".png")); num++; } catch (IOException ex) { ex.printStackTrace(); } } }); btnPanel.add(okBtn, BorderLayout.EAST); this.getContentPane().add(btnPanel, BorderLayout.SOUTH); } public static void main(String[] args) throws Exception{ CameraFrame camera = new CameraFrame(); camera.setVisible(true); } }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“java如何實(shí)現(xiàn)攝像頭截圖功能”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
本文名稱(chēng):java如何實(shí)現(xiàn)攝像頭截圖功能-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://bm7419.com/article26/dssijg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容