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
Voila la partie du code qui traite l'image :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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");
}
}
 
}