我一直在使用bookClasses类集来操作图像,但在尝试删除图像中的红眼时,我得到了一个NullPointerException错误。代码如下:
首先是Picture.Java类中的removeRedEye方法:
public void removeRedEye(int startX, int startY, int endX, int endY, Color newColor){
Pixel pixel = null;
for (int x = startX; x < endX; x++){
for (int y = startY; y < endY; y++){
if (pixel.colorDistance(Color.RED) < 167){
pixel.setColor(newColor);
}
}
}
}
}和Test类:
public class TestRemoveRedEye{
public static void main(String[] args){
String fileName = FileChooser.getMediaPath("//jenny-red.jpg");
Picture jennyPicture = new Picture(fileName);
jennyPicture.removeRedEye(109,91,202,107,java.awt.Color.BLACK);
jennyPicture.explore();
}
}如果有人能建议为什么我的程序不能工作,我将不胜感激。
在error: removeRedEye方法中的if (pixel.colorDistance(Color.RED) < 167){中挑出了这些行
来自测试类的jennyPicture.removeRedEye(109,91,202,107,java.awt.Color.BLACK);
发布于 2013-03-20 04:36:06
像素 is 空在调用其引用的方法之前,您需要对其进行初始化。
Pixel pixel = null;// neew to initialize this.
pixel = new Pixel(); // somethin like this
for (int x = startX; x < endX; x++){
for (int y = startY; y < endY; y++){
if (pixel.colorDistance(Color.RED) < 167){发布于 2013-03-20 04:36:06
您将null赋值给pixel,然后在其上调用一个方法。因此出现了NPE。
Pixel pixel = null;
for (int x = startX; x < endX; x++){
for (int y = startY; y < endY; y++){
if (pixel.colorDistance(Color.RED) < 167){ // <==== pixel is null !
pixel.setColor(newColor);
}
}
}https://stackoverflow.com/questions/15509884
复制相似问题