package com.github.sarxos.webcam;
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Locale;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
import javax.imageio.ImageIO;
import com.github.sarxos.webcam.util.ImageUtils;
public class WebcamUtils {
public static final void capture(Webcam webcam, File file) {
if (!webcam.isOpen()) {
webcam.open();
}
try {
ImageIO.write(webcam.getImage(), ImageUtils.FORMAT_JPG, file);
} catch (IOException e) {
throw new WebcamException(e);
}
}
public static final void capture(Webcam webcam, File file, String format) {
if (!webcam.isOpen()) {
webcam.open();
}
try {
ImageIO.write(webcam.getImage(), format, file);
} catch (IOException e) {
throw new WebcamException(e);
}
}
public static final void capture(Webcam webcam, String filename) {
if (!filename.endsWith(".jpg")) {
filename = filename + ".jpg";
}
capture(webcam, new File(filename));
}
public static final void capture(Webcam webcam, String filename, String format) {
String ext = "." + format.toLowerCase();
if (!filename.endsWith(ext)) {
filename = filename + ext;
}
capture(webcam, new File(filename), format);
}
public static final byte[] getImageBytes(Webcam webcam, String format) {
return ImageUtils.toByteArray(webcam.getImage(), format);
}
/**
* Capture image as BYteBuffer.
*
* @param webcam the webcam from which image should be obtained
* @param format the file format
* @return Byte buffer
*/
public static final ByteBuffer getImageByteBuffer(Webcam webcam, String format) {
return ByteBuffer.wrap(getImageBytes(webcam, format));
}
/**
* Get resource bundle for specific class.
*
* @param clazz the class for which resource bundle should be found
* @param locale the {@link Locale} object
* @return Resource bundle
*/
public static final ResourceBundle loadRB(Class<?> clazz, Locale locale) {
String pkg = WebcamUtils.class.getPackage().getName().replaceAll("\\.", "/");
return PropertyResourceBundle.getBundle(String.format("%s/i18n/%s", pkg, clazz.getSimpleName()));
}
}