我试图编写一个程序,将图像转换为灰度,然后使用新名称保存图像的副本("灰色 - " + fname),但是我是运行程序时收到错误消息java.lang.NullPointerExeption。
在
gray.save();
下面代码底部的行突出显示。我不确定程序为什么说变量gray为空。我应该改变线的顺序吗?谢谢你的帮助。
import edu.duke.*;
import java.io.File;
public class ImageConverterAndSaver {
public ImageResource makeGray(ImageResource inImage) {
ImageResource outImage = new ImageResource(inImage.getWidth(), inImage.getHeight());
for (Pixel px:outImage.pixels()){
Pixel inPixel = inImage.getPixel(px.getX(), px.getY());
int grayConversion = (inPixel.getRed() + inPixel.getGreen() + inPixel.getBlue()/3);
px.setRed(grayConversion);
px.setGreen(grayConversion);
px.setBlue(grayConversion);
}
return outImage;
}
public void doSave(){
DirectoryResource dr = new DirectoryResource();
for (File f: dr.selectedFiles()) {
ImageResource image = new ImageResource(f);
String fname = image.getFileName();
String newName = "gray-" + fname;
image.setFileName(newName);
ImageResource gray = makeGray(image);
gray.draw();
gray.save();
}
}
}