检查图像是否相同

时间:2016-10-09 17:49:32

标签: java

所以我对此有很多疑问,但首先是我的任务。

  

编写一个检查的公共图片验证方法(图片p)   看看“这个”图片和图片p是否相同。它返回一个   与“这张”图片大小相同的新图片。对于每个像素   在原始图片“this”中的位置,比较它的颜色   像素的颜色与第二个相同的位置   图片。如果两个像素具有相同的颜色(即原件是   未在副本中修改),设置此位置的颜色   结果图片变白了。如果两个像素不相同   颜色,将结果图片中此位置的颜色设置为   原始图片中像素的颜色。返回结果   图片。如果两张图片的大小不一致,则得到   图片应包含所有黑色像素

这是我现在的代码

public Picture Authenticate(Picture p)
{

  Pixel sourcePixel = null;

  Pixel targetPixel = null; 

  Picture result = new Picture(this.getWidth(), this.getHeight());

  for(int sourceX = 0, targetX= getWidth()-1; sourceX < getWidth(); sourceX++,targetX++)
  {
    for(int sourceY = 0, targetY= getHeight(); sourceY< getHeight(); sourceY++,targetY++)
    {
      sourcePixel = this.getPixel(sourceX,sourceY);
      targetPixel = result.getPixel(targetX, targetY);
    }
    if (sourcePixel.getColor() == targetPixel.getColor())
      targetPixel.setColor(Color.WHITE);
    else
       targetPixel.setColor(Color.BLACK);
  }
  return result;
}

以下是我的问题:

  1. 如何使authenticate参数中的p适合此?
  2. 我是否在循环中以正确的方式进行此操作?
  3. 用我的if和else语句,我觉得好像甚至没有接近 改变我需要的像素

1 个答案:

答案 0 :(得分:0)

  
      
  1. 如何使authenticate参数中的p适合此?
  2.   

this是您的源图片; p是目标图片; result是您放置比较源和目标所产生的输出像素的位置。

  
      
  1. 我是否在循环中以正确的方式进行此操作?
  2.   

是的,但if / else语句属于内部循环

  
      
  1. 用我的if和else语句,我觉得好像甚至没有接近改变我需要的像素
  2.   

你很亲密。继续处理它并逐步调试调试器中的代码,看看实际发生了什么。

不要气馁,这比你想象的更接近。