Android 比较两张图片
这段代码工作得很好,但我不能与ANDROID一起工作,我需要两张图片Android 比较两张图片,android,image,android-camera,Android,Image,Android Camera,这段代码工作得很好,但我不能与ANDROID一起工作,我需要两张图片 import java.awt.image.BufferedImage; import java.io.FileInputStream; import java.util.Vector; import javax.imageio.ImageIO; public class Untitled1 { public static void main(String[] args) {
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.util.Vector;
import javax.imageio.ImageIO;
public class Untitled1 {
public static void main(String[] args) {
Vector original = testImg("b.jpg");
Vector clonde = testImg("a.jpg");
System.out.println(original.equals(clonde));
}
public static Vector testImg(String file) {
Vector all = new Vector();
try {
BufferedImage im = ImageIO.read(new FileInputStream(file));
int w = im.getWidth(null);
int h = im.getHeight(null);
int[] rgbs = new int[w * h];
int x = 0;
im.getRGB(0, 0, w, h, rgbs, 0, w);
for (int i = 0; i < w; i+=100) {
Vector line = new Vector();
for (int j = 0; j < h; j+=100) {
line.add(new Integer(rgbs[x]));
// System.out.println("Pixel " + i + "," + j + "has " + "RGB values of " + rgbs[x]);
x++;
}
all.add(line);
}
} catch (Exception ex) {
ex.printStackTrace();
}
return all;
}
}
导入java.awt.image.buffereImage;
导入java.io.FileInputStream;
导入java.util.Vector;
导入javax.imageio.imageio;
公开课不收费1{
公共静态void main(字符串[]args){
向量原始=testImg(“b.jpg”);
向量克隆=testImg(“a.jpg”);
System.out.println(original.equals(clonde));
}
公共静态向量testImg(字符串文件){
Vector all=新向量();
试一试{
BuffereImage im=ImageIO.read(新文件输入流(文件));
int w=im.getWidth(null);
inth=im.getHeight(null);
int[]rgbs=新int[w*h];
int x=0;
im.getRGB(0,0,w,h,rgbs,0,w);
对于(int i=0;i
有几件事:
- 如果您的代码处理所选菜单选项,则应该从
返回onOptionsItemSelected()
,如果不处理,则返回true
false
- 一旦确定图像不同,应立即中断循环。为什么做的工作比你需要的多
- 这里不需要使用箱子/开关。您只能处理单个菜单项
@覆盖
公共布尔值onOptionsItemSelected(菜单项项){
如果(item.getItemId()!=1000)
返回(super.onOptionsItemSelected(项目);
对于(int i=0;i可能的重复项,正如您所发现的,逐像素比较图像需要很长时间。您可能希望在比较方法中使用其他检查。有关详细信息,请参阅此处:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() != 1000)
return (super.onOptionsItemSelected(item);
for(int i=0;i<tabA.length;i++)
{
if(tabA[i] != tabB[i])
{
Toast.makeText(this, "Image are not equal", Toast.LENGTH_LONG).show();
return (true);
}
}
Toast.makeText(this, "Image are equal", Toast.LENGTH_LONG).show();
return (true);
}