package com.example.gameai.ui;
import java.text.DecimalFormat;
import android.R.integer;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import com.example.gameai.R;
/**
* Android图片对比(像素精准对比),速度较慢建议用多线程获取
* @author xupp
* @createData 2013-7-18
*/
import java.text.DecimalFormat;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
public class PictureContrast
{
private static final String DIFFERENT_SIZE = "differentSize";
private static final String RESULT_FORMAT = "00.0%";
public static String similarity(Resources resources) {
Bitmap bm1 = BitmapFactory.decodeResource(resources, R.drawable.ew);
Bitmap bm2 = BitmapFactory.decodeResource(resources, R.drawable.ww);
return similarity(bm1, bm2);
}
public static String similarity(Bitmap bm1, Bitmap bm2) {
final int bm1Width = bm1.getWidth();
final int bm2Width = bm2.getWidth();
final int bmHeight = bm1.getHeight();
int[] pixels1 = new int[bm1Width];
int[] pixels2 = new int[bm2Width];
if (bmHeight != bm2.getHeight() || bm1Width != bm2Width){
return DIFFERENT_SIZE;
}
Log.i("1", "s: "+bm1);
reset();
for (int i = 0; i < bmHeight; i++) {
bm1.getPixels(pixels1, 0, bm1Width, 0, i, bm1Width, 1);
bm2.getPixels(pixels2, 0, bm2Width, 0, i, bm2Width, 1);
comparePixels(pixels1, pixels2, bm1Width);
}
return percent(Count.sT, Count.sF + Count.sT);
}
private static void comparePixels(int[] pixels1, int[] pixels2, int length) {
for (int i = 0; i < length; i++) {
if (pixels1[i] == pixels2[i]) {
Count.sT++;
} else {
Count.sF++;
}
}
}
private static String percent(int divisor, int dividend) {
final double value = divisor * 1.0 / dividend;
DecimalFormat df = new DecimalFormat(RESULT_FORMAT);
Log.i("1", "!!!!!!!!!!: "+df.format(value));
return df.format(value);
}
private static void reset() {
Count.sT = 0;
Count.sF = 0;
}
private static class Count {
private static int sT;
private static int sF;
}
}