在网页上显示摄像头画面

<object   classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95"   id="MediaPlayer1"   width="500"   height="450"> 
      <param   name="AudioStream"   value="-1"> 
      <param   name="AutoSize"   value="-1"> 
      <param   name="AutoStart"   value="-1"> 
      <param   name="AnimationAtStart"   value="-1"> 
      <param   name="AllowScan"   value="-1"> 
      <param   name="AllowChangeDisplaySize"   value="-1"> 
      <param   name="AutoRewind"   value="0"> 
      <param   name="Balance"   value="0"> 
      <param   name="BaseURL"   value> 
      <param   name="BufferingTime"   value="5"> 
      <param   name="CaptioningID"   value> 
      <param   name="ClickToPlay"   value="-1"> 
      <param   name="CursorType"   value="0"> 
      <param   name="CurrentPosition"   value="-1"> 
      <param   name="CurrentMarker"   value="0"> 
      <param   name="DefaultFrame"   value> 
      <param   name="DisplayBackColor"   value="0"> 
      <param   name="DisplayForeColor"   value="16777215"> 
      <param   name="DisplayMode"   value="0"> 
      <param   name="DisplaySize"   value="0"> 
      <param   name="Enabled"   value="-1"> 
      <param   name="EnableContextMenu"   value="0"> 
      <param   name="EnablePositionControls"   value="-1"> 
      <param   name="EnableFullScreenControls"   value="0"> 
      <param   name="EnableTracker"   value="-1"> 
      <param   name="Filename"   value="mms://221.0.77.150/cj4"> 
      <param   name="InvokeURLs"   value="-1"> 
      <param   name="Language"   value="-1"> 
      <param   name="Mute"   value="0"> 
      <param   name="PlayCount"   value="1"> 
      <param   name="PreviewMode"   value="0"> 
      <param   name="Rate"   value="1"> 
      <param   name="SAMILang"   value> 
      <param   name="SAMIStyle"   value> 
      <param   name="SAMIFileName"   value> 
      <param   name="SelectionStart"   value="-1"> 
      <param   name="SelectionEnd"   value="-1"> 
      <param   name="SendOpenStateChangeEvents"   value="-1"> 
      <param   name="SendWarningEvents"   value="-1"> 
      <param   name="SendErrorEvents"   value="-1"> 
      <param   name="SendKeyboardEvents"   value="0"> 
      <param   name="SendMouseClickEvents"   value="0"> 
      <param   name="SendMouseMoveEvents"   value="0"> 
      <param   name="SendPlayStateChangeEvents"   value="-1"> 
      <param   name="ShowCaptioning"   value="0"> 
      <param   name="ShowControls"   value="-1"> 
      <param   name="ShowAudioControls"   value="-1"> 
      <param   name="ShowDisplay"   value="-1"> 
      <param   name="ShowGotoBar"   value="0"> 
      <param   name="ShowPositionControls"   value="-1"> 
      <param   name="ShowStatusBar"   value="-1"> 
      <param   name="ShowTracker"   value="-1"> 
      <param   name="TransparentAtStart"   value="0"> 
      <param   name="VideoBorderWidth"   value="0"> 
      <param   name="VideoBorderColor"   value="0"> 
      <param   name="VideoBorder3D"   value="0"> 
      <param   name="Volume"   value="0"> 
      <param   name="WindowlessVideo"   value="0"> 
  </object> 
Java中利用JMF编写摄像头拍照程序
                                                                                 
利用JMF编写摄像头拍照程序
摄像头拍照程序用于现场拍照,生成照片,主要用到Java   Media   Framework(JMF)。 
  首先到SUN下载最新的JMF,然后安装。http://java.sun.com/products/java-media/jmf/index.jsp
  需求:
  1.   用摄像头拍照
  2.   在文本框输入文件名
  3.   按下拍照按钮,获取摄像头内的图像
  4.   在拍下的照片上有一红框截取固定大小的照片。
  5.   保存为本地图像为jpg格式,不得压缩画质
  技术关键,相信也是大家最感兴趣的部分也就是如何让一个摄像头工作,并拍下一张照片了。
  利用JMF,代码很简单:
//利用这三个类分别获取摄像头驱动,和获取摄像头内的图像流,获取到的图像流是一个Swing的Component组件类
public   static   Player   player   =   null;
private   CaptureDeviceInfo   di   =   null;
private   MediaLocator   ml   =   null;
//文档中提供的驱动写法,为何这么写我也不知:)
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);
 }
}
catch   (Exception   e)
{
 e.printStackTrace();
} 
  接下来就是点击拍照,获取摄像头内的当前图像。
  代码也是很简单:
private   JButton   capture;
private   Buffer   buf   =   null;
private   BufferToImage   btoi   =   null;
private   ImagePanel   imgpanel   =   null;
private   Image   img   =   null;
private   ImagePanel   imgpanel   =   null;
JComponent   c   =   (JComponent)   e.getSource();
if   (c   ==   capture)//如果按下的是拍照按钮 
{ 
 FrameGrabbingControl   fgc   =(FrameGrabbingControl)    player.getControl( "javax.media.control.FrameGrabbingControl ");
 buf   =   fgc.grabFrame();   //   获取当前祯并存入Buffer类
 btoi   =   new   BufferToImage((VideoFormat)   buf.getFormat());
 img   =   btoi.createImage(buf);   //   show   the   image 
 imgpanel.setImage(img);
} 
  保存图像的就不多说了,以下为示例代码
BufferedImage   bi   =   (BufferedImage)   createImage(imgWidth,   imgHeight);
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(1f,   false);//不压缩图像
encoder.setJPEGEncodeParam(param);
try
{
 encoder.encode(bi);
 out.close();
}
catch   (java.io.IOException   io)
{
 System.out.println( "IOException ");
}


你可能感兴趣的:(java,在网页上显示摄像头)