matwiano
Messages postés12Date d'inscriptionmercredi 30 septembre 2009StatutMembreDernière intervention 8 janvier 2010
-
15 oct. 2009 à 20:05
matwiano
Messages postés12Date d'inscriptionmercredi 30 septembre 2009StatutMembreDernière intervention 8 janvier 2010
-
20 oct. 2009 à 16:36
Bonjour,
j'ai un problem avec mon programme et j'espère m'aide a corriger les erreur et merci d'avance
c'est un programme qui fais la capture d'image et l'enregistrer et l'envoyé par sms ou mail
et voila mon programme:
// imports spécifiques à JavaMail
import javax.mail.*;
import javax.mail.internet.*;
//---------------------------------------------------------------------------------------- --
public class EchoServer
{
public static char c;
public static void main (String args [])
{
try
{
// Création d'un serveur sur le port 13267
ServerSocket server = new ServerSocket (13267);
// Attente de la connexion d'un client
System.out.println("debut chargement image");
while (true)
{
new NouvelleConnexion(server.accept ());
System.out.println ("Connexion sur le socket");
//---------------------------------------------------
//System.out.println ("Connexion sur le socket : " + socket);
//-------------------------------------------------------------------------------------------
class NouvelleConnexion implements Runnable
{
Thread t;
Socket sck;
// Récupération des flux d'entrés et de sortie
InputStream fluxEntree;
OutputStream fluxSortie;
NouvelleConnexion(Socket sck)
{
//t = new Thread(this, sck.getInetAdress().getHostName()+"/"+sck.getPort());
t=new Thread(this);
this.sck=sck;
// Récupération des flux d'entrés et de sortie
try
{
fluxEntree = sck.getInputStream ();
fluxSortie = sck.getOutputStream ();
}
catch (IOException e)
{
e.printStackTrace();
}
System.out.println ("Connexion sur le socket : " + this.sck);
t.start();
}
public void run()
{
try
{
EchoServer.c = (char)fluxEntree.read();
}
catch (IOException e)
{
e.printStackTrace();
}
if(EchoServer.c == 'c')
{
System.out.println ("démmarage de la capture");
// récupération d'un périphérique à partir de son nom
CaptureDeviceInfo captureDevice = CaptureDeviceManager.getDevice("vfw:Microsoft WDM Image Capture (Win32):0");
// récupération du MediaLocator lié au périphérique de capture
MediaLocator mediaLocator = captureDevice.getLocator();
try {
// récupération d'une datasource à partir d'un MediaLocator
DataSource ds = Manager.createDataSource(mediaLocator);
// connexion sur la DataSource
ds.connect();
// connexion d'un player sur la datasource
Player player = Manager.createPlayer(ds);
// préparation du player et du périphérique
player.realize();
// démarrage de la lecture
player.start();
//-----------------------------------------------------------------------------------------------
// attend 1 seconde
// Récupération des flux d'entrés et de sortie
// InputStream fluxEntree = socket.getInputStream ();
//OutputStream fluxSortie = socket.getOutputStream ();
//server.close ();
/* }
catch (IOException e)
{
System.out.println (e);
}*/
}//fin de if
}
//-------------------------------------------------------------------------------------------------------
public static void saveJPG(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
}
try
{
// encodage de l'image
encoder.encode(bi);
out.close();
}
catch (java.io.IOException io)
{
System.out.println("IOException");
}
}
//----------------------------------------------------------------------------------------------------------
if (monitoring){
// on créé les PixelGrabber qui vont a partir des images remplir les
// tableau de pixels
Object img1;
PixelGrabber grab1 = new PixelGrabber(img1‚ 0‚ 0‚ 320‚ 240‚ pixels1‚ 0‚ 320);
Object img2;
PixelGrabber grab2 = new PixelGrabber(img2‚ 0‚ 0‚ 320‚ 240‚ pixels2‚ 0‚ 320);
try {
// on grabbe
grab1.grabPixels();
grab2.grabPixels();
}
catch (InterruptedException e) {
System.err.println(“impossible de grabber les pixels de l`image“);
return;
}
// on récupère la moyenne des 3 couleurs pour 2 images successives
getColors(pixels1‚ red1‚ green1‚ blue1‚ colors1);
getColors(pixels2‚ red2‚ green2‚ blue2‚ colors2);
public void getColors(int []pixels‚ int blue‚ int red‚ int green‚ int[] colors) {
blue red green = 0;
for (int i = 0 ; i < pixels.length ; i÷÷) {
c = new Color(pixels[i]);
blue = blue ÷ c.getBlue();
red = red ÷ c.getRed();
green = green ÷ c.getGreen();
}
blue = blue / imageSize;
red = red / imageSize;
green = green / imageSize;
colors[0] = red;
colors[1] = green;
colors[2] = blue;
}
if(imageChanged(colors1‚ colors2)) {
mailWarning = new MailSender(“matthieu.drony@supinfo.com“‚ “Intrusion detectée“);
smsWarning = new MailSender(“06xxxxxxxx@orange.fr“‚ “Intrusion detectée“);
try{
this.sleep(200);
}
catch(InterruptedException ie){
}
}
}
}
....
public boolean imageChanged(int[] colors1‚ int[] colors2){
for (int i = 0 ; i < 3 ; i÷÷) {
if ((colors2[i] > colors1[i]÷3) && (colors2[i] > colors1[i]-3) ){
return true;
}
}
return false;
}
//classe qui permet l'envoi de mails et de SMS
class MailSender {
//////////////////////// constructeur //////////////////////////////
public MailSender(String dest‚ String message) {
try {
// recupération des propriétés du système
Properties props = System.getProperties();
// définition du type de message et du serveur smtp pour l'envoi
props.put(“mail.smtp.host“‚ “ns0.ovh.net“);
// conversion du message au format Mime
Session session = Session.getInstance(props‚ null);
Message msg = new MimeMessage(session);
// auteur du message
msg.setFrom(new InternetAddress(““Administrateur“ <matthieu.drony@free.fr>“));
// objet‚ en-tête‚ et contenu du message
msg.setSubject(“Intrusion !!!“);
msg.setText(“Bonjour‚ une intrusion a été détectée.nn“ ÷ message);
msg.setHeader(“X-Mailer“‚ “JavaVideoMonitoring“);
msg.setSentDate(new Date());
matwiano
Messages postés12Date d'inscriptionmercredi 30 septembre 2009StatutMembreDernière intervention 8 janvier 2010 20 oct. 2009 à 16:36
SALUTla 1ere partie consern le serveur et elle marche bien,et la suivant:
import java.net.*;
import java.io.*;
import java.awt.image.BufferedImage;
import javax.imageio.*;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
//------------------------------------------------------------------------------------------
public class EchoServer
{
public static char c;
public static void main (String args [])
{
try
{
// Création d'un serveur sur le port 13267
ServerSocket server = new ServerSocket (13267);
// Attente de la connexion d'un client
System.out.println("debut chargement image");
while (true)
{
new NouvelleConnexion(server.accept ());
System.out.println ("Connexion sur le socket");
//---------------------------------------------------
//System.out.println ("Connexion sur le socket : " + socket);
//-------------------------------------------------------------------------------------------
class NouvelleConnexion implements Runnable
{
Thread t;
Socket sck;
// Récupération des flux d'entrés et de sortie
InputStream fluxEntree;
OutputStream fluxSortie;
NouvelleConnexion(Socket sck)
{
//t = new Thread(this, sck.getInetAdress().getHostName()+"/"+sck.getPort());
t=new Thread(this);
this.sck=sck;
// Récupération des flux d'entrés et de sortie
try
{
fluxEntree = sck.getInputStream ();
fluxSortie = sck.getOutputStream ();
}
catch (IOException e)
{
e.printStackTrace();
}
System.out.println ("Connexion sur le socket : " + this.sck);
t.start();
}
public void run()
{
try
{
EchoServer.c = (char)fluxEntree.read();
}
catch (IOException e)
{
e.printStackTrace();
}
if(EchoServer.c == 'c')
{
System.out.println ("démmarage de la capture");
// récupération d'un périphérique à partir de son nom
CaptureDeviceInfo captureDevice = CaptureDeviceManager.getDevice("vfw:Microsoft WDM Image Capture (Win32):0");
// récupération du MediaLocator lié au périphérique de capture
MediaLocator mediaLocator = captureDevice.getLocator();
try {
// récupération d'une datasource à partir d'un MediaLocator
DataSource ds = Manager.createDataSource(mediaLocator);
// connexion sur la DataSource
ds.connect();
// connexion d'un player sur la datasource
Player player = Manager.createPlayer(ds);
// préparation du player et du périphérique
player.realize();
// démarrage de la lecture
player.start();
//-----------------------------------------------------------------------------------------------
// attend 1 seconde
// 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 converter;
converter = new BufferToImage((VideoFormat) buf.getFormat());
Image img;
// création de l'image
img = converter.createImage(buf);
saveJPG(img, "i%2 +."jpg");
//--------------------------------------------------------------
File fichier = new File(i%2."jpg");
byte[] octets = new byte[(int)fichier.length()];
FileInputStream photo = new FileInputStream(fichier);
photo.read(octets);
ObjectOutputStream fluxReseau = new ObjectOutputStream(sck.getOutputStream());
fluxReseau.writeObject(octets);
// Récupération des flux d'entrés et de sortie
// InputStream fluxEntree = socket.getInputStream ();
//OutputStream fluxSortie = socket.getOutputStream ();
//server.close ();
/* }
catch (IOException e)
{
System.out.println (e);
}*/
}//fin de if
}
//-------------------------------------------------------------------------------------------------------
public static void saveJPG(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
}
try
{
// encodage de l'image
encoder.encode(bi);
out.close();
}
catch (java.io.IOException io)
{
System.out.println("IOException");
}
}
//----------------------------------------------------------------------------------------------------------
}
Et la 2eme conserne la detection de mouvement et l'envoie d'mms:
public class Detection {
grab1=new PixelGrabber(int);
grab2=new PixelGrabber(int);
{
public void getColors(int pixels‚ int blue‚ int red‚ int green‚ int colors) {
blue red green = 0;
for (int i = 0 ; i < pixels.length ; i++) {
c = new Color(pixels[i]);
blue = blue + c.getBlue();
red = red + c.getRed();
green = green + c.getGreen();
}
blue = blue / imageSize;
red = red / imageSize;
green = green / imageSize;
colors[0] = red;
colors[1] = green;
colors[2] = blue;
}
public void getColors(int Pixels, int blue, int green, int red){
blue green red = 1;
for (int i = 1; i < pixels.length ; i++) {
c = new Color(pixels[i]);
blue = blue + c.getBlue();
red = red + c.getRed();
green = green + c.getGreen();
}
blue = blue / imageSize;
red = red / imageSize;
green = green / imageSize;
colors[1] = red;
colors[2] = green;
colors[3] = blue;