11package com .github .sarxos .webcam ;
22
3+ import java .awt .FlowLayout ;
34import java .awt .Graphics2D ;
5+ import java .awt .event .ActionEvent ;
46import java .awt .image .BufferedImage ;
7+ import java .io .File ;
58import java .io .IOException ;
69
710import javax .imageio .ImageIO ;
11+ import javax .swing .AbstractAction ;
12+ import javax .swing .JButton ;
813import javax .swing .JFrame ;
914import javax .swing .SwingUtilities ;
1015import javax .swing .UIManager ;
1520 *
1621 * @author Bartosz Firyn (SarXos)
1722 */
18- public class WebcamImageTransformerExample extends JFrame implements WebcamImageTransformer {
19-
20- private static final long serialVersionUID = 1L ;
23+ public class WebcamImageTransformerExample implements WebcamImageTransformer {
2124
2225 private static final BufferedImage IMAGE_FRAME = getImage ("frame.png" );
2326
27+ private Webcam webcam = Webcam .getDefault ();
28+
2429 public WebcamImageTransformerExample () {
2530
26- Webcam webcam = Webcam .getDefault ();
2731 webcam .setViewSize (WebcamResolution .VGA .getSize ());
2832 webcam .setImageTransformer (this );
2933 webcam .open ();
@@ -34,7 +38,23 @@ public WebcamImageTransformerExample() {
3438 panel .setFPSDisplayed (true );
3539 panel .setFillArea (true );
3640
41+ JButton button = new JButton (new AbstractAction ("capture" ) {
42+
43+ private static final long serialVersionUID = 1L ;
44+
45+ @ Override
46+ public void actionPerformed (ActionEvent event ) {
47+ try {
48+ ImageIO .write (webcam .getImage (), "PNG" , new File ("capture.png" ));
49+ } catch (IOException e ) {
50+ e .printStackTrace ();
51+ }
52+ }
53+ });
54+
55+ window .setLayout (new FlowLayout (FlowLayout .CENTER ));
3756 window .add (panel );
57+ window .add (button );
3858 window .pack ();
3959 window .setVisible (true );
4060 window .setDefaultCloseOperation (JFrame .EXIT_ON_CLOSE );
@@ -46,7 +66,7 @@ public BufferedImage transform(BufferedImage image) {
4666 int w = image .getWidth ();
4767 int h = image .getHeight ();
4868
49- BufferedImage modified = new BufferedImage (w , h , BufferedImage .TYPE_INT_ARGB );
69+ BufferedImage modified = new BufferedImage (w , h , BufferedImage .TYPE_INT_RGB );
5070
5171 Graphics2D g2 = modified .createGraphics ();
5272 g2 .drawImage (image , null , 0 , 0 );
0 commit comments