G
Guest
Gast
Hallo,
ich habe mir von jemanden eine Klasse zum Vergleichen von .jpg Dateien programmieren lassen.
Diese Klasse konnte ich sinnvoll in mein Programm integrieren.
Es funktioniert an meinem PC zu Hause optimal. Aber am Rechner meines Vaters funktioniet es nicht.
Ich arbeite mit der selben Netbeans Plattform.
Das Programm leisete folgendes:
es speichert die zuletzt gefallene Nummer eines Onlinecasinoroulette als .jpg. Diese Datei wird mit allen anderen schon gespeicherten Bildern verglichen und wenn sich die Bilder gleichen, erkennt er, welche Nummer gefallen ist.
Hier Ausschnitte des Programms:
Irgendwo ist der Wurm drin.
Über Hilfe würde ich mich sehr freuen.
ich habe mir von jemanden eine Klasse zum Vergleichen von .jpg Dateien programmieren lassen.
Diese Klasse konnte ich sinnvoll in mein Programm integrieren.
Es funktioniert an meinem PC zu Hause optimal. Aber am Rechner meines Vaters funktioniet es nicht.
Ich arbeite mit der selben Netbeans Plattform.
Das Programm leisete folgendes:
es speichert die zuletzt gefallene Nummer eines Onlinecasinoroulette als .jpg. Diese Datei wird mit allen anderen schon gespeicherten Bildern verglichen und wenn sich die Bilder gleichen, erkennt er, welche Nummer gefallen ist.
Hier Ausschnitte des Programms:
Irgendwo ist der Wurm drin.
Über Hilfe würde ich mich sehr freuen.
Code:
class AbhoererZiehen implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
try{
// screenshot in ein BufferedImage schreiben:
BufferedImage screenshot=(new Robot()).createScreenCapture(new Rectangle(15,190,32,8));
// in die Datei test.jpg schreiben:
OutputStream out=new BufferedOutputStream(new FileOutputStream("d:\\Ahrens\\Java\\bgp\\Aufnahme.jpg"));
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(screenshot) ;
out.close() ;
}
catch (Exception exc) {exc.printStackTrace();}
try{
holen=gv.start_Vergleich();}
catch (Exception ex){
System.out.println(ex.getMessage());
}
String[] vergleich=new String[37];
for(int i=0;i<37;i++){
vergleich[0]="00.jpg";vergleich[1]="01r.jpg";vergleich[2]="02s.jpg";vergleich[3]="03r.jpg";vergleich[4]="04s.jpg";vergleich[5]="05r.jpg";vergleich[6]="06s.jpg";vergleich[7]="07r.jpg";vergleich[8]="08s.jpg";vergleich[9]="09r.jpg";vergleich[10]="10s.jpg";vergleich[11]="11s.jpg";vergleich[12]="12r.jpg";vergleich[13]="13s.jpg";vergleich[14]="14r.jpg";vergleich[15]="15s.jpg";vergleich[16]="16r.jpg";vergleich[17]="17s.jpg";vergleich[18]="18r.jpg";vergleich[19]="19r.jpg";vergleich[20]="20s.jpg";vergleich[21]="21r.jpg";vergleich[22]="22s.jpg";vergleich[23]="23r.jpg";vergleich[24]="24s.jpg";vergleich[25]="25r.jpg";vergleich[26]="26s.jpg";vergleich[27]="27r.jpg";vergleich[28]="28s.jpg";vergleich[29]="29s.jpg";vergleich[30]="30r.jpg";vergleich[31]="31s.jpg";vergleich[32]="32r.jpg";vergleich[33]="33s.jpg";vergleich[34]="34r.jpg";vergleich[35]="35s.jpg";vergleich[36]="36r.jpg";
if(holen.equals(vergleich[i]))
z1=i;
}
Code:
public class GifVergleich
{
public GifVergleich(){}
/**
* Selbst test der Klasse
* @param args
* @throws Exception
*/
public String start_Vergleich()throws Exception
{
String suchfile1 = "d:\\Ahrens\\Java\\bgp\\Aufnahme.jpg";
GifVergleich gifVergleich1 = new GifVergleich("d:\\Ahrens\\Java\\bgp");
//System.out.println("Datei : " + suchfile1 + " exisiert im Ornder ?" + gifVergleich1.isGifVorhanden(suchfile1));
String return_value=new String();
return_value=gifVergleich1.isGifVorhanden(suchfile1);
return return_value;
}
private final Hashtable vorhandeneDateien = new Hashtable();
/**
* Legt eine neue Instanz der Klasse an.
* @param dataSource Verzeichniss mit den vorhandenen Dateien
* @throws Exception
*/
public GifVergleich(String dataSource) throws Exception
{
File dir = new File(dataSource);
// Wenn File nicht exisitiert .... nicht gut ! :-)
if(!dir.exists())
throw new Exception("Verzeichnis existiert nicht.");
// wenn kein Verzeichnis ..... garnicht gut ! :-)
if(!dir.isDirectory())
throw new Exception("Datenquelle ist kein Verzeichnis.");
// Alle dateien im Verzeichniss holen.
File[] dateien = dir.listFiles();
for (int i = 0; i < dateien.length; i++)
{
// Wenn keine Datei dann nächstes File.
if(!dateien[i].isFile()) continue;
// Wenn kein GIF dann nächstes File
if(!dateien[i].getAbsolutePath().toLowerCase().endsWith(".jpg"))
continue;
// Checksumme berechnen und in einen Set Speichern
vorhandeneDateien.put(getMD5CheckSum(dateien[i]),dateien[i].getName());
}
}
/**
* Berechnet die Checksumme zu einer Datei
* @param f Datei
* @return Zeichenkette mit der Checksumme
*/
private String getMD5CheckSum(File f)
{
try {
// Inputstream ---> Rohdaten der Datei
FileInputStream fis = new FileInputStream(f);
byte[] buffer = new byte[1024];
MessageDigest md = MessageDigest.getInstance("MD5");
// Daten in den Algo schieben.
for(int i = fis.read(buffer); i >= 0; i = fis.read(buffer))
{
md.update(buffer);
}
fis.close();
//Checksumme zurück geben
return new String(md.digest());
}
catch (IOException ex)
{
return null;
}
catch (NoSuchAlgorithmException ex)
{
return null;
}
}
/**
* Eine Datei auf das vorhandensein in dem Datenverzeichnis
überprüfen.
* @param dateiname Dateiname mit dem Absoluten Pfad
* @return wahr wenn die datei schon in dem Verzeichniss ist.
* @throws Exception
*/
public String isGifVorhanden(String dateiname) throws Exception
{
File f = new File(dateiname);
if(!f.exists())
throw new Exception("Datei existiert nicht.");
String md5code = getMD5CheckSum(f);
return(String)this.vorhandeneDateien.get(md5code);
}
}