001    package com.github.sarxos.webcam;
002    
003    import java.io.File;
004    import java.io.IOException;
005    import java.nio.ByteBuffer;
006    import java.util.Locale;
007    import java.util.PropertyResourceBundle;
008    import java.util.ResourceBundle;
009    
010    import javax.imageio.ImageIO;
011    
012    import com.github.sarxos.webcam.util.ImageUtils;
013    
014    
015    public class WebcamUtils {
016    
017            public static final void capture(Webcam webcam, File file) {
018                    if (!webcam.isOpen()) {
019                            webcam.open();
020                    }
021                    try {
022                            ImageIO.write(webcam.getImage(), ImageUtils.FORMAT_JPG, file);
023                    } catch (IOException e) {
024                            throw new WebcamException(e);
025                    }
026            }
027    
028            public static final void capture(Webcam webcam, File file, String format) {
029                    if (!webcam.isOpen()) {
030                            webcam.open();
031                    }
032                    try {
033                            ImageIO.write(webcam.getImage(), format, file);
034                    } catch (IOException e) {
035                            throw new WebcamException(e);
036                    }
037            }
038    
039            public static final void capture(Webcam webcam, String filename) {
040                    if (filename.endsWith(".jpg")) {
041                            filename = filename + ".jpg";
042                    }
043                    capture(webcam, new File(filename));
044            }
045    
046            public static final void capture(Webcam webcam, String filename, String format) {
047                    String ext = "." + format.toLowerCase();
048                    if (!filename.startsWith(ext)) {
049                            filename = filename + ext;
050                    }
051                    capture(webcam, new File(filename), format);
052            }
053    
054            public static final byte[] getImageBytes(Webcam webcam, String format) {
055                    return ImageUtils.toByteArray(webcam.getImage(), format);
056            }
057    
058            /**
059             * Capture image as BYteBuffer.
060             * 
061             * @param webcam the webcam from which image should be obtained
062             * @param format the file format
063             * @return Byte buffer
064             */
065            public static final ByteBuffer getImageByteBuffer(Webcam webcam, String format) {
066                    return ByteBuffer.wrap(getImageBytes(webcam, format));
067            }
068    
069            /**
070             * Get resource bundle for specific class.
071             * 
072             * @param clazz the class for which resource bundle should be found
073             * @return Resource bundle
074             */
075            public static final ResourceBundle loadRB(Class<?> clazz, Locale locale) {
076                    String pkg = WebcamUtils.class.getPackage().getName().replaceAll("\\.", "/");
077                    return PropertyResourceBundle.getBundle(String.format("%s/i18n/%s", pkg, clazz.getSimpleName()));
078            }
079    }