السلام عليكم و رحمة الله و بركاته
أحاول كثيراً أخذ صورة بال
WebCam
عن طريق الجافا كود
هل لكم بمساعدتي اذا هنالك حلول .. وضعت لأعضاء قبلي ..
السلام عليكم و رحمة الله و بركاته
أحاول كثيراً أخذ صورة بال
WebCam
عن طريق الجافا كود
هل لكم بمساعدتي اذا هنالك حلول .. وضعت لأعضاء قبلي ..
استخدم jmf
انا استخدمت هذا الكود
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import javax.media.*;
import javax.media.format.*;
import javax.media.util.*;
import javax.media.control.*;
import javax.media.protocol.*;
import java.util.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import com.sun.image.codec.jpeg.*;
public class SwingCapture extends Panel implements ActionListener
{
public static Player player = null;
public CaptureDeviceInfo di = null;
public MediaLocator ml = null;
public JButton capture = null;
public Buffer buf = null;
public Image img = null;
public VideoFormat vf = null;
public BufferToImage btoi = null;
public ImagePanel imgpanel = null;
public SwingCapture()
{
setLayout(new BorderLayout());
setSize(320,550);
imgpanel = new ImagePanel();
capture = new JButton("Capture");
capture.addActionListener(this);
String str1 = "vfw:Logitech USB Video Camera:0";
String str2 = "vfw:Microsoft WDM Image Capture (Win32):0";
di = CaptureDeviceManager.getDevice(str2);
ml = di.getLocator();
try
{
player = Manager.createRealizedPlayer(ml);
player.start();
Component comp;
if ((comp = player.getVisualComponent()) != null)
{
add(comp,BorderLayout.NORTH);
}
add(capture,BorderLayout.CENTER);
add(imgpanel,BorderLayout.SOUTH);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
Frame f = new Frame("SwingCapture");
SwingCapture cf = new SwingCapture();
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
playerclose();
System.exit(0);}});
f.add("Center",cf);
f.pack();
f.setSize(new Dimension(320,550));
f.setVisible(true);
}
public static void playerclose()
{
player.close();
player.deallocate();
}
public void actionPerformed(ActionEvent e)
{
JComponent c = (JComponent) e.getSource();
if (c == capture)
{
// Grab a frame
FrameGrabbingControl fgc = (FrameGrabbingControl)
player.getControl("javax.media.control.FrameGrabbingControl");
buf = fgc.grabFrame();
// Convert it to an image
btoi = new BufferToImage((VideoFormat)buf.getFormat());
img = btoi.createImage(buf);
// show the image
imgpanel.setImage(img);
// save image
saveJPG(img,"c:\\test.jpg");
}
}
class ImagePanel extends Panel
{
public Image myimg = null;
public ImagePanel()
{
setLayout(null);
setSize(320,240);
}
public void setImage(Image img)
{
this.myimg = img;
repaint();
}
public void paint(Graphics g)
{
if (myimg != null)
{
g.drawImage(myimg, 0, 0, this);
}
}
}
public static void saveJPG(Image img, String s)
{
BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = bi.createGraphics();
g2.drawImage(img, null, null);
FileOutputStream out = null;
try
{
out = new FileOutputStream(s);
}
catch (java.io.FileNotFoundException io)
{
System.out.println("File Not Found");
}
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
param.setQuality(0.5f,false);
encoder.setJPEGEncodeParam(param);
try
{
encoder.encode(bi);
out.close();
}
catch (java.io.IOException io)
{
System.out.println("IOException");
}
}
}
بس مشكلته يظهر لي
screen
كمبيوتري مافيه كيمرا
بس انا شريت كيمرا و ركبتها على الكمبيوتر ..
ياليت .. تقدرون تساعدوني ..
:huh:
وعليكم السلام ورحمه الله وبركاته ،
هل تعمل الكاميرا من الأساس ؟ وهل تعمل في JMF stduio (لا أذكر الأسم ولكنه شيئا من هذا القبيل) ، لأنها اذا لم تعمل فيه فلن تعمل برمجيا ..
وهل الصوره التي حفظت في C:\\test.jpg بنفس الشكل ؟
جرب هذا الكود :
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
import javax.media.*;
import javax.media.control.*;
import javax.media.format.*;
import javax.media.util.*;
/**
* Grabs a frame from a Webcam, overlays the current date and time,
* and saves the frame as a PNG to c:\webcam.png
*
* @author David
* @version 1.0, 16/01/2004
*/
public class FrameGrab
{
public static void main(String[] args) throws Exception
{
// Create capture device
CaptureDeviceInfo deviceInfo = CaptureDeviceManager.getDevice(
"vfw:Microsoft WDM Image Capture (Win32):0");
Player player = Manager.createRealizedPlayer(deviceInfo.getLocator());
player.start();
// Wait a few seconds for camera to initialise (otherwise img==null)
Thread.sleep(2500);
// Grab a frame from the capture device
FrameGrabbingControl frameGrabber =
(FrameGrabbingControl)player.getControl(
"javax.media.control.FrameGrabbingControl");
Buffer buf = frameGrabber.grabFrame();
// Convert frame to an buffered image so it can be processed and saved
Image img = (new
BufferToImage((VideoFormat)buf.getFormat()).createImage(buf));
BufferedImage buffImg = new BufferedImage(img.getWidth(null),
img.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffImg.createGraphics();
g.drawImage(img, null, null);
// Overlay curent time on image
//g.setColor(Color.RED);
// g.setFont(new Font("Verdana", Font.BOLD, 16));
//g.drawString((new Date()).toString(), 10, 25);
// Save image to disk as PNG
ImageIO.write(buffImg, "jpg", new File(
"c:\\webcam.jpg"));
// Stop using webcam
player.close();
player.deallocate();
System.exit(0);
}
}أيضا جرب هذا المثال -موقع صيني- :
وستجد أيضا في الصفحه الرئيسيه حوالى 14 مثال في jmf متنوعه ما بين rtp وتسجيل الصوت وكم شغله :
بالتوفيق :)
تم تعديل هذه المشاركة بواسطة Wajdy Essam في 10 أبريل 2009 في 20:18
http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة
https://moalfat.com للكتب الالكترونية والكورسات التعليمية
Everything we see now is just an engineering solution based on old science
لا للأسف ما قاعد يشتغل مع الــ
JMStudio
: (
أشلون أقدر أشغله عليه ..!