/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.client.conn;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.PixelGrabber;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
/**
*
* @author Administrator
*/
public class ImageComparison {
public boolean compareImge(Image currentImage, Image nextImage, double percLimit) {
if (currentImage != null && nextImage != null) {
try {
PixelGrabber currentPg = new PixelGrabber(currentImage, 0, 0,
currentImage.getWidth(null), currentImage.getHeight(null), false);
PixelGrabber nextPg = new PixelGrabber(nextImage, 0, 0,
nextImage.getWidth(null), nextImage.getHeight(null), false);
int[] currImgData = null;
int[] nextImgData = null;
if (currentPg.grabPixels()) {
int width = currentPg.getWidth();
int height = currentPg.getHeight();
currImgData = new int[width * height];
currImgData = (int[]) currentPg.getPixels();
}
if (nextPg.grabPixels()) {
int width = nextPg.getWidth();
int height = nextPg.getHeight();
nextImgData = new int[width * height];
nextImgData = (int[]) nextPg.getPixels();
}
int tolerance = 0;
for (int i = 0; i < currImgData.length && i < nextImgData.length; i++) {
if (currImgData[i] == nextImgData[i]) {
// System.out.println(currImgData[i] + " : " + nextImgData[i]);
} else {
// System.err.println(currImgData[i] + " : " + nextImgData[i]);
tolerance++;
}
}
//System.out.println("*********************" + tolerance + "*****************");
double perce = ((double)tolerance / (double)currImgData.length)*100;
// System.out.println(perce);
// System.out.println(new MyDataComparator().compare(currImgData, nextImgData));
//return Arrays.equals(currImgData, nextImgData);
if(perce > percLimit){
return false;
}else{
return true;
}
} catch (InterruptedException ex) {
return false;
}
} else {
return false;
}
}
void saveImage(BufferedImage nextImage, String fileName) {
try {
File outputFile = new File(fileName+".jpg");
ImageIO.write(nextImage, "jpeg", outputFile);
} catch (IOException ex) {
Logger.getLogger(ImageComparison.class.getName()).log(Level.SEVERE, null, ex);
}
}
}