JPG处理器Java代码引发空指针异常

JPG处理器Java代码引发空指针异常,java,eclipse,image,file,jpeg,Java,Eclipse,Image,File,Jpeg,我可以导入JPG文件,但每次运行程序输出图像时,都会出现以下异常: Exception in thread "main" java.lang.NullPointerException at InvertImage.main(InvertImage.java:24) 不知道为什么,这里是我的代码: import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import java.io.File; import jav

我可以导入JPG文件,但每次运行程序输出图像时,都会出现以下异常:

Exception in thread "main" java.lang.NullPointerException
at InvertImage.main(InvertImage.java:24)
不知道为什么,这里是我的代码:

import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;  
import java.io.File;
import java.io.IOException;

public class InvertImage{
    public static void main(String args[])throws IOException{
        BufferedImage img = null;
        File imgFile = null;

        try {
            imgFile = new File("Cake.jpg");
            img = ImageIO.read(imgFile);
        } catch(IOException e){
            System.out.println(e);
        }

        int width = img.getWidth();
        int height = img.getHeight();


        for(int y = 0; y < height; y++){
            for(int x = 0; x < width; x++){
                int pixel = img.getRGB(x, y);


                int a = (pixel >> 24) & 0xff;
                int r = (pixel >> 16) & 0xff;
                int g = (pixel >> 8) & 0xff;
                int b = pixel & 0xff;

                r = 255 - r;
                g = 255 - g;
                b = 255 - b;

                //set new RGB values
                pixel = (a << 24) | ( r << 16) | ( g << 8) | b;

                img.setRGB(x, y, pixel);
            }
        }

        try{
            imgFile = new File("Cake_invert.jpg")
            ImageIO.write(img, "jpg", imgFile);
        }catch(IOException e){
            System.out.println(e);
        }
    }
}

我不知道这里缺少了什么,只要在我的程序运行完毕后输出一个jpg文件就可以了。

您得到的是NullPointerException。这意味着你试图用一个空的对象做一些事情。它甚至告诉您,错误发生在类InvertImage和第24行InvertImage.java:24中。 可能找不到image Cake.jpg,当您从Eclipse启动应用程序并将文件放在错误的文件夹中时,经常会出现这种情况。这就是为什么当您不确定要将文件放在哪里时,最好给出要打开的文件的完整路径。如果要保留相对路径,请将图像放入项目的主文件夹中,与src和bin文件夹处于同一级别


你的代码对我有用。我唯一改变的是给出了Cake.jpg的完整路径,例如C:\\Cake.jpg。同样的情况也适用于Cake_invert.jpg,否则它将保存在项目的主文件夹中。

谢谢,我终于得到了一个输出