所以我对此有很多疑问,但首先是我的任务。
编写一个检查的公共图片验证方法(图片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;
}
以下是我的问题:
答案 0 :(得分:0)
- 如何使authenticate参数中的p适合此?
醇>
this
是您的源图片; p
是目标图片; result
是您放置比较源和目标所产生的输出像素的位置。
- 我是否在循环中以正确的方式进行此操作?
醇>
是的,但if / else语句属于内部循环
- 用我的if和else语句,我觉得好像甚至没有接近改变我需要的像素
醇>
你很亲密。继续处理它并逐步调试调试器中的代码,看看实际发生了什么。
不要气馁,这比你想象的更接近。