我尝试读取特定像素的rgb但是我得到了IOException 我找不到任何共鸣,但我试图从这个网站运行程序 link 但我仍然得到IOException 那么这可能是因为JRE或我的IDE是Eclipse吗?
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);
}
}
答案 0 :(得分:2)
这可能是因为您链接的程序正在引用您未在路径中的图像。
在File构造函数之后添加以下行以检查您要查找的文件是否存在:
File file= new File("rockface.jpg");
if (file.exists()){
//OK
}else{
//you should have I/O Exception when the code reach ImageIO.read(file);
}
答案 1 :(得分:1)
根据JavaDoc,这(可能)是抛出IOException
的方法:
来自文档:
抛出:
IllegalArgumentException - 如果输入为空。
IOException - 如果在阅读期间发生错误。
这很可能是因为无法找到您指定的File
。尝试将其移动到类路径或项目根目录。
答案 2 :(得分:0)
我记不清确切的细节,但我听说其他人在用Eclipse询问IOExceptions。
可能的情况是您的文件不在项目的运行目录中。我不记得如何设置eclipse,但是尝试将文件移动到包含.class文件的任何文件夹中,或者只是以文件的位置来播放。
答案 3 :(得分:0)
解决方案是指定绝对路径(假设您使用的窗口为c:.... \ etc ..)否则您将不得不使用相对路径。
要知道您的应用程序在哪个文件夹中搜索,您可以使用:
System.getProperty( “user.dir来”);