PK\{7META-INF/MANIFEST.MFMLK-. K-*ϳR03MuI,.R.KwN,()-JPKI53PK [{7Z/m1 SwingCapture.class2 SwingCapturejava/awt/Paneljava/awt/event/ActionListenerserialVersionUIDJ ConstantValueplayerLjavax/media/Player;diLjavax/media/CaptureDeviceInfo;mlLjavax/media/MediaLocator;captureLjavax/swing/JButton;bufLjavax/media/Buffer;imgLjava/awt/Image;vf Ljavax/media/format/VideoFormat;btoi Ljavax/media/util/BufferToImage;imgpanelLSwingCapture$ImagePanel;()VCode " LineNumberTableLocalVariableTable([Ljava/lang/String;)V ( % *  ,  .  0  2  4  6  8 :java/awt/BorderLayout 9( = >? setLayout(Ljava/awt/LayoutManager;)V A BCsetSize(II)VESwingCapture$ImagePanel DG %H(LSwingCapture;)VJjavax/swing/JButtonLCapture IN %O(Ljava/lang/String;)V IQ RSaddActionListener"(Ljava/awt/event/ActionListener;)VUvfw:Logitech USB Video Camera:0W)vfw:Microsoft WDM Image Capture (Win32):0 Y[Z javax/media/CaptureDeviceManager \] getDevice3(Ljava/lang/String;)Ljavax/media/CaptureDeviceInfo;_javax/media/MediaLocatoravfw://0 ^N dfejavax/media/Manager ghcreateRealizedPlayer0(Ljavax/media/MediaLocator;)Ljavax/media/Player; jlkjavax/media/Player mstart jo pqgetVisualComponent()Ljava/awt/Component;sNorth u vwadd)(Ljava/awt/Component;Ljava/lang/Object;)VyCenter{South }~java/lang/Exception printStackTrace java/lang/Integer parseInt(Ljava/lang/String;)I java/lang/System outLjava/io/PrintStream;java/lang/StringBuilderValue of timeout is N append(I)Ljava/lang/StringBuilder; toString()Ljava/lang/String; java/io/PrintStream Oprintln java/lang/Thread sleep(J)V java/lang/InterruptedException   grabScreen-unable to grab image, try increasing timeout exit(I)VthisLSwingCapture;args[Ljava/lang/String;str1Ljava/lang/String;str2compLjava/awt/Component;eLjava/lang/Exception;timeoutIe1 Ljava/lang/InterruptedException; StackMapTablejava/lang/Stringjava/awt/Componentmainjava/awt/Frame Cam Capture N  %&SwingCapture$1 ( addWindowListener"(Ljava/awt/event/WindowListener;)V v<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component; packjava/awt/Dimension %C B(Ljava/awt/Dimension;)V  setVisible(Z)VfLjava/awt/Frame;cf playerclose j close j  deallocate(javax.media.control.FrameGrabbingControl j  getControl)(Ljava/lang/String;)Ljavax/media/Control;(javax/media/control/FrameGrabbingControl  grabFrame()Ljavax/media/Buffer;javax/media/util/BufferToImage javax/media/Buffer  getFormat()Ljavax/media/Format;javax/media/format/VideoFormat  %#(Ljavax/media/format/VideoFormat;)V     createImage&(Ljavax/media/Buffer;)Ljava/awt/Image; D setImage(Ljava/awt/Image;)V (  currentTimeMillis()J  (J)Ljava/lang/StringBuilder; webcam.jpg  -(Ljava/lang/String;)Ljava/lang/StringBuilder;   !saveJPG%(Ljava/awt/Image;Ljava/lang/String;)Vfgc*Ljavax/media/control/FrameGrabbingControl;filenameactionPerformed(Ljava/awt/event/ActionEvent;)V (*)java/awt/event/ActionEvent +, getSource()Ljava/lang/Object;.javax/swing/JComponentLjava/awt/event/ActionEvent;cLjavax/swing/JComponent;3java/awt/image/BufferedImage 576java/awt/Image 89getWidth!(Ljava/awt/image/ImageObserver;)I 5; <9 getHeight 2> %?(III)V 2A BCcreateGraphics()Ljava/awt/Graphics2D; EGFjava/awt/Graphics2D HI drawImageP(Ljava/awt/Image;Ljava/awt/geom/AffineTransform;Ljava/awt/image/ImageObserver;)ZKjava/io/FileOutputStream JNNFile Not Found PRQ"com/sun/image/codec/jpeg/JPEGCodec STcreateJPEGEncoderC(Ljava/io/OutputStream;)Lcom/sun/image/codec/jpeg/JPEGImageEncoder; VXW)com/sun/image/codec/jpeg/JPEGImageEncoder YZgetDefaultJPEGEncodeParamJ(Ljava/awt/image/BufferedImage;)Lcom/sun/image/codec/jpeg/JPEGEncodeParam; \^](com/sun/image/codec/jpeg/JPEGEncodeParam _` setQuality(FZ)V Vb cdsetJPEGEncodeParam-(Lcom/sun/image/codec/jpeg/JPEGEncodeParam;)V Vf ghencode!(Ljava/awt/image/BufferedImage;)V Jk IOExceptionmjava/io/FileNotFoundExceptionojava/io/IOExceptionsbiLjava/awt/image/BufferedImage;g2Ljava/awt/Graphics2D;Ljava/io/FileOutputStream;ioLjava/io/FileNotFoundException;encoder+Lcom/sun/image/codec/jpeg/JPEGImageEncoder;param*Lcom/sun/image/codec/jpeg/JPEGEncodeParam;Ljava/io/IOException;ftpFILEsun/net/ftp/FtpClient ~(http://website.com/usernamepassword ~ O openServer ~ login'(Ljava/lang/String;Ljava/lang/String;)V ~ binary path/to/dir/ ~ Ocd java/io/File N  length  getName ~ put0(Ljava/lang/String;)Lsun/net/TelnetOutputStream;java/io/FileInputStream  %(Ljava/io/File;)V java/io/OutputStream write([BII)V java/io/InputStream read([B)I  / ~  closeServer ftpClientLsun/net/ftp/FtpClient;hostfileLjava/io/File;filesizeLjava/io/OutputStream;inLjava/io/InputStream;[B exception SourceFileSwingCapture.java InnerClasses ImagePanel!    )!# $%& *'*)*+*-*/*1*3*5*7*9Y;<*L@*DY*F7*IYKM-*-*PTMVN*-X)*^Y`b+*+c!!i!nY: *rt**-xt**7zt :|+Q+26 : 6Y :* :}}}}#'$  "!'",%7&A(M)Z*b,e-h.p0}3478:;<=FJKMRTUW\] _ch$p eh"< D }O}_F}  & AYɷLY*M+Yж+x,W++Y@&ݶ+#"k lnu&v*w;x@}$ A 7.  9!!#$ {!L*+/*Y*/5**5*/ 1*7*1 YM*1,Y,#.  -<G^fz$ {m"#^$%& y+'-M,*-k!N*-/*Y*/5**5*/ 1*7*1 Y:*1#2 (=LWox$4yy/q01Z"#o $x-  ! z2Y*4*:=M,@N-*DW:JY+L::MO:,U: [a,ei:j#-0l^knn#J  #02;BLU^fnpy$\ zzpgqrbst#Wu2 vwB8xyL.z{p v|<052EJl 252EJV\n }O  ~YLMN:+,+-++Y*:6+:Y:: 6    Y6 ++ :|}#b !%,6>IT[^aky~!#$%($z $ 6[>SIHT=[60 ^3 Aa ~ %~}DPK [{7ub}SwingCapture$ImagePanel.class26SwingCapture$ImagePaneljava/awt/PanelmyimgLjava/awt/Image;this$0LSwingCapture;(LSwingCapture;)VCode    ()V     setLayout(Ljava/awt/LayoutManager;)V  setSize(II)VLineNumberTableLocalVariableTablethisLSwingCapture$ImagePanel;setImage(Ljava/awt/Image;)V " #repaintimgpaint(Ljava/awt/Graphics;)V (*)java/awt/Graphics +, drawImage3(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)ZgLjava/awt/Graphics; StackMapTable SourceFileSwingCapture.java InnerClasses4 SwingCapture ImagePanel   X*+ ****@    F *+*!   $%& Y*+**'W-./012 35PK [{7JxxSwingCapture$1.class2$SwingCapture$1java/awt/event/WindowAdapter()VCode  LineNumberTableLocalVariableTablethisLSwingCapture$1; windowClosing(Ljava/awt/event/WindowEvent;)V  SwingCapture  playerclose java/lang/System exit(I)VeLjava/awt/event/WindowEvent; SourceFileSwingCapture.javaEnclosingMethod !"main([Ljava/lang/String;)V InnerClasses03* n  D pqr   # PK [{7-eeSwingCapture.javaimport javax.swing.*; import javax.swing.event.*; import java.io.*; import java.net.URL; import javax.media.*; import javax.media.format.*; import javax.media.util.*; import javax.media.control.*; import javax.media.protocol.*; import sun.net.ftp.FtpClient; import sun.net.www.URLConnection; 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 { /** * */ private static final long serialVersionUID = 1L; 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(String[] args) { setLayout(new BorderLayout()); setSize(640, 1100); 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(); ml = new MediaLocator("vfw://0"); 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(); } //grabScreen(); if(args.length > 0){ int timeout; try { timeout = Integer.parseInt(args[0]); } catch (Exception e) { // MATT: handle exception timeout = 3000; } try { System.out.println("Value of timeout is " + timeout + "");// DEBUG 27 Nov 2007 TODO: remove this line: Thread.sleep(timeout); } catch (InterruptedException e1) { // MATT Auto-generated catch block e1.printStackTrace(); } try { grabScreen(); } catch (Exception e) { // MATT: handle exception System.out.println("unable to grab image, try increasing timeout ");// DEBUG 27 Nov 2007 TODO: remove this line: } System.exit(0); } } public static void main(String[] args) { Frame f = new Frame("Cam Capture"); SwingCapture cf = new SwingCapture(args); 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 grabScreen(){ // 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 String filename = "" + System.currentTimeMillis() + " webcam.jpg"; saveJPG(img, filename); //System.console().writer().write(filename); System.out.println("" + filename + ""); } 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); String filename = "" + System.currentTimeMillis() + " webcam.jpg"; // save image saveJPG(img, filename); } } 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(1.0f, false); encoder.setJPEGEncodeParam(param); try { encoder.encode(bi); out.close(); //ftpFILE(s); } catch (java.io.IOException io) { System.out.println("IOException"); } /* * URL url = new * URL("ftp://user01:pass1234@stabeler.com/webcam/webcamtest.jpg;type=i"); * URLConnection urlc = url.openConnection(); * * InputStream is = urlc.getInputStream(); // To download OutputStream * os = urlc.getOutputStream(); // To upload */ } public static void ftpFILE(String filename) { FtpClient ftpClient = new FtpClient(); String host = "http://website.com/"; String username = "username"; String password = "password"; try { ftpClient.openServer(host); // connect to FTP server ftpClient.login(username, password); // login ftpClient.binary(); // set to binary mode transfer ftpClient.cd("path/to/dir/"); // change directory /*String prefix = shortname.substring(0, shortname.lastIndexOf(".")); // prefix of the filename String ext = (shortname.substring(shortname.lastIndexOf(".") + 1)) .toUpperCase(); // file extension ftpClient.issueCommand("MKD " + prefix); // create the directory with the same name as the prefix ftpClient.cd(prefix); // change to that directory */ File file = new File(filename); int filesize = (int) file.length(); // cast the length to an int, needed to update progressbar //doFrame(); // create the frame that contains the progressbar //t = new ProgressThread(); // the thread that will update the progressbar //t.start(); // start the thread OutputStream out = ftpClient.put(file.getName()); InputStream in = new FileInputStream(file); byte c[] = new byte[4096]; int read = 0; while ((read = in.read(c)) != -1) { out.write(c, 0, read); //total += read; } in.close(); // close the io streams out.close(); //t.interrupt(); // stop the thread ftpClient.cd("/"); // change to root directory to avoid wsftp server bug ftpClient.closeServer(); // close connection } catch (Exception exception) { exception.printStackTrace(); } } } PK K\{7{   Readme.txtAuthor: Matt Stabeler, Nov 2007 Requires: JMF (Java Media Framework) from http://java.sun.com/products/java-media/jmf/ This program was created using code from a java forum somewhere on http://forum.java.sun.com/ This amended version takes a command line parameter of time in milliseconds (3000 is good), which prompts the webcam viewer to capture an image (after this time), output a jpeg, then shutdown. If an invalid parameter is passed (i.e. not an integer) the program will use the default value of 3000. If no parameters are entered, then the cam will just show the webcam stream, and allow the capture button to be clicked. It can be run as follows: Command line: c:\\pathto\place\Webcam.jar 5000 PHP: PK s\{7pp webcam.php Matt's Cube Cam :)

Matt's Cube Cam

Latest Image

No image to display

'; }else{ $keys = array_keys($imgarray); $key = array_shift($keys); echo ''; } if($active) echo '
Capture New Image'; echo '
Download the capture program (requires JMF to work)'; ?>

Recent Images

$data){ if($count < $limit){ ?>
'; echo '

All Images

'; echo "
    "; if($imgarray){ foreach($imgarray as $key=>$data){ echo '
  1. ' . $key . '
  2. '; } } echo "
      "; ?> PK\{7I53META-INF/MANIFEST.MFPK [{7Z/m1 {SwingCapture.classPK [{7ub}5!SwingCapture$ImagePanel.classPK [{7JxxQ%SwingCapture$1.classPK [{7-ee'SwingCapture.javaPK K\{7{   DReadme.txtPK s\{7pp Gwebcam.phpPKYO