2011-08-23 73 views
-3

我试图读取特定像素的RGB,但我得到IOException。
我找不到任何共振,所以我试图从这个网站运行程序 link 但即时通讯仍然得到IOException。
所以这可能是因为JRE或我的IDE是Eclipse?获取IOException,无法找到任何原因

import java.io.*; 
import java.awt.*; 
import javax.imageio.ImageIO; 
import java.awt.image.BufferedImage; 

public class GetPixelColor 
{ 
    public static void main(String args[]) throws IOException{ 
    File file= new File("rockface.jpg"); 
    BufferedImage image = ImageIO.read(file); 
    // Getting pixel color by position x=100 and y=40 
    int clr= image.getRGB(100,40); 
    int red = (clr & 0x00ff0000) >> 16; 
    int green = (clr & 0x0000ff00) >> 8; 
    int blue = clr & 0x000000ff; 
    System.out.println("Red Color value = "+ red); 
    System.out.println("Green Color value = "+ green); 
    System.out.println("Blue Color value = "+ blue); 
    } 
} 
+1

零代码或上下文无人可以帮忙。 –

+0

给我们您的代码和错误,我们可以提供帮助,否则有几十亿个原因可能会导致IOException。 – Nicholas

回答

0

我不记得确切的细节,但我听说其他人在使用Eclipse时会询问IOExceptions。

这可能是您的文件不在您的项目的运行目录中。我不记得eclipse是如何设置的,但是尝试将文件移动到保存.class文件的任何文件夹中,或者只是另外播放文件的位置。

2

这可能是因为你链接的程序引用的图像,你没有在你的路径。

添加以下行文件的构造后,检查文件是否你正在寻找存在:

File file= new File("rockface.jpg"); 
if (file.exists()){ 
    //OK 
}else{ 
    //you should have I/O Exception when the code reach ImageIO.read(file); 

} 
0

一个解决方案是指定的绝对路径(假设你使用的是Windows,这将是C :. ... \等)。否则,你将不得不使用相对路径。
要知道在哪个文件夹中的应用是搜索,你可以使用:

System.getProperty( “user.dir来”);

1

据的JavaDoc,这个(可能)是抛IOException的方法:

ImageIO#read(File f)

从文档:

抛出:

抛出:IllegalArgumentException - 如果输入为空。

IOException - 如果在读取过程中发生错误。

这很可能是由于无法找到您指定的File。尝试将其移动到类路径或项目根目录。

相关问题