java - JPG 处理器 Java 代码引发空指针异常
问题描述
我可以导入一个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。这意味着您正在尝试对empty
. 它甚至会告诉您错误发生在 classInvertImage
和 line 24
-(InvertImage.java:24)
中。可能Cake.jpg
找不到您的图像,当您从 Eclipse 启动应用程序并将文件放在错误的文件夹中时,这种情况经常发生。这就是为什么当您不确定将文件放在哪里时,最好提供要打开的文件的完整路径。如果要保留相对路径,请将图像放入项目的主文件夹中,src
与bin
文件夹处于同一级别。
你的代码对我有用。我唯一改变的是给出完整的路径Cake.jpg
,例如C:\\Cake.jpg
。这同样适用于Cake_invert.jpg
,否则它将保存在项目的主文件夹中。
推荐阅读
- php - Woocommerce 删除按钮删除错误的产品
- css - 如何裁剪不适合的网格块内的文本
- python-3.x - 如何从对话框中获取输入回到treeview pyqt5 python 3
- sql - SQL Server - 将未知数量的行值更改为列名
- c++ - UpdateLayeredWindow() 和 OpenGL 上下文
- python - 如何将 request.user 导入 djnago 中的 TemplateVew
- sql - 将 INSEET 添加到 SELECT QUERY 以查找缺失值
- flutter - 在 Flutter 中加载特定 URL 时关闭 Webview
- python - Python代码中的Pycharm函数调用不返回任何内容
- c# - C#如何将Jarray添加到列表中
>