Boucle pour prise d'image toutes les 0,5 secs
Bonjour
J'expose ma demande
Dans mon programme j'ai besoin d'une boucle java afin de prendre une image toutes les 1/2 secondes.
Infos autres : le programme récupère une image à partir du flux d'une webcam grâce Java Media Player. Si quelqu'un a une solution a m'apporter.
La boucle peut être de n'importe quelle forme juste la plus efficace.
Merci d'avance amis développeurs :king:
Voila la partie du code qui traite l'image :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| // récupère un contrôle sur le flux
FrameGrabbingControl fgc = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
Buffer buf;
// récupère un Buffer contenant l'image demandée
buf = fgc.grabFrame();
// convertion du buffer en image (via BufferToImage)
BufferToImage btoi;
btoi = new BufferToImage((VideoFormat) buf.getFormat());
Image img;
// création de l'image
img = btoi.createImage(buf);
// save image
saveBMP(img, "testWritter.jpeg");
} catch (NoDataSourceException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NoProcessorException e) {
e.printStackTrace();
} catch (NoPlayerException e) {
e.printStackTrace();
}
}
/**
* Crée un fichier jpeg sur le disque à partir d'un objet Image
* @param img
* @param s
*/
public static void saveJPEG(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) {
// création du fichier automatiquement si inexistant
}
// encodeur JPEG
//JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
// paramètres d'encodage
//JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
//param.setQuality(0.5f, false);
// assignation des paramètres d'encodage
//encoder.setJPEGEncodeParam(param);
try {
// encodage de l'image
encoder.encode(bi);
out.close();
} catch (java.io.IOException io) {
System.out.println("IOException");
}
}
} |