在java中读取文件时出错
我正在尝试用java读取jpeg图像,并将其转换为二维数组。代码如下在java中读取文件时出错,java,file-io,input,javax.imageio,Java,File Io,Input,Javax.imageio,我正在尝试用java读取jpeg图像,并将其转换为二维数组。代码如下 import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; public class JpegToArray { public static void main(String[] args) throws IOException { URL u
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
public class JpegToArray {
public static void main(String[] args) throws IOException {
URL url = JpegToArray.class.getResource("img/abc.jpg");
BufferedImage img = ImageIO.read(url);
@SuppressWarnings("unused")
int[][] _img = convert_to_2d_Array(img);
}
private static int[][] convert_to_2d_Array(BufferedImage image) {
int width = image.getWidth();
int height = image.getHeight();
int[][] result = new int[height][width];
for (int row = 0; row < height; row++) {
for (int col = 0; col < width; col++) {
result[row][col] = image.getRGB(col, row);
System.out.println(result[row][col]);
}
}
return result;
}
}
我在这里做错了什么?我假设您的目录结构如下,img文件夹不在类路径中
/PR1
|-- bin
-- JpegToArray.class
|-- img
-- abc.jpg
|-- src
-- JpegToArray.java
如果是这样,您可以获得类的父目录和
String parentPath = new File(JpegToArray.class.getResource("").getPath()).getParent();
URL url = new File(parentPath + "/img/abc.jpg").toURI().toURL();
BufferedImage img = ImageIO.read(url);
或者直接没有url之类的
String parentPath = new File(JpegToArray.class.getResource("").getPath()).getParent();
BufferedImage img = ImageIO.read(new File(parentPath + "/img/abc.jpg"));
根据您的文件夹结构,可能存在以下可能性: 1.您必须将您的
img
文件夹包含在课程路径中
在eclipse中,右键单击eclipse项目并选择
属性,选择左侧的Java构建路径链接。然后选择
源选项卡。您将看到所有java源文件夹的列表。你
甚至可以添加您自己的。默认情况下,{project}/src文件夹是
类路径文件夹
如果已完成此操作,则会在部署文件夹中看到映像。在您的情况下,它是bin
它必须存在于文件夹img
中,但您的bin文件夹中没有img
文件夹或图像文件
2.如果不想在类路径中添加img
,则应将此img
文件夹保留在src
文件夹中,以便默认情况下与src
文件夹一起部署
如果您选择第二个,则您的URL应按如下方式装箱:
URL url = Test.class.getResource("/img/acctmanager.png");
确保您的img
文件夹也与主src
文件夹一起部署。如果部署正确,您应该在bin文件夹中找到它
我希望这会对您有所帮助。您是否检查了url?在执行main的第一行之后,“url”的值是多少?如果为空,则在类路径上找不到img/abc.jpg。看起来好像找不到图像。你能展示你的项目布局吗?jpg和teh课程在哪里?请尝试
JpegToArray.class.getResource(“/img/abc.jpg”)
相对于您的项目,图像abc.jpg位于何处?确实,项目布局有问题,因此找不到图像。
URL url = Test.class.getResource("/img/acctmanager.png");