matwiano
Newbie


Messages : 1 Inscrit(e) le: 16/10/2009
|
Posté le 16/10/2009 14:05 | | | problem avec mon programme java |
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:
import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; import java.awt.image.PixelGrabber; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.objectOutputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket;
import javax.media.Buffer; import javax.media.CaptureDeviceInfo; import javax.media.CaptureDeviceManager; import javax.media.Manager; import javax.media.MediaLocator; import javax.media.NoDataSourceException; import javax.media.NoPlayerException; import javax.media.NoProcessorException; import javax.media.Player; import javax.media.control.FrameGrabbingControl; import javax.media.format.VideoFormat; import javax.media.protocol.DataSource; import javax.media.util.BufferToImage;
import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; import java.io.*; import java.net.InetAddress; import java.util.Properties; import java.util.Date; //imports de base import java.io.*; import java.net.InetAddress; import java.util.Properties; import java.util.Date;
// 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"); //---------------------------------------------------
//----------------------------------------------------
} } catch (IOException e) { System.out.println (e); }
} } //---------Fin Main---------------------------------------- //Socket socket = server.accept ();
//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
while (true) {
try { t.sleep(800); } catch (InterruptedException e) { e.printStackTrace(); }
// 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); double i; i=0; saveJPG(img, i%2+".jpg"); i++; //-------------------------------------------------------------- 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);
//------------------------------------------------------------
} } catch (NoDataSourceException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (NoProcessorException e) { e.printStackTrace(); } catch (NoPlayerException e) { e.printStackTrace(); }
// 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 }
// 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"); } } //---------------------------------------------------------------------------------------------------------- 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); 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 > colors1÷3) && (colors2 > colors1-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>“ );
// destinataire msg.setRecipients(Message.RecipientType.TO‚ InternetAddress.parse(dest‚ false));
// 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());
// envoi du message Transport.send(msg); } catch(Exception e) { e.printStackTrace(); } } }
}
|
|
|