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 }