import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.DirectColorModel;
import java.io.File;
import java.io.IOException;import javax.imageio.ImageIO;
import javax.swing.JFrame;public class TwoValueImg extends JFrame
{
    private static final long serialVersionUID = 5457187579070310160L;
    public BufferedImage ImgIn,temp;
    TwoValueImg()
    {
        try{
        ImgIn = ImageIO.read(new File("E:\\EclipseWorkSpace\\AddressList\\source\\beauty.jpg"));            
    }catch(IOException e){}
    ColorModel temp = ImgIn.getColorModel();
    System.out.println("3:"+temp.getClass());
    int b = temp.getBlue(222);   
    }
 
            
    public static void main(String args[])
    {
        new TwoValueImg();
    }
}

解决方案 »

  1.   

    Exception in thread "main" java.lang.NullPointerException
    at sybase.TwoValueImg.<init>(TwoValueImg.java:27)
    at sybase.TwoValueImg.main(TwoValueImg.java:33)以上我的运行结果。在我这里,你说的情况不能再现。
      

  2.   

    我想是 222 是你太随意了,可能这个不满足他的要求, 我不懂图像处理, 你可以参考下下面的链接http://blog.csdn.net/alzy_silang/archive/2008/04/16/2298490.aspx
      

  3.   

    跑了一下,你那个文件名格式就有问题吧,
    E:\\EclipseWorkSpace\AddressList\source\beauty.jpg
    而且还抛空指针异常
      

  4.   

    异常是在你的getBule(222)抛出的,感觉是你图片的蓝色有多个222色素的值。异常说返回的不止一个像素。
      

  5.   

    而且你没实现对象系列化接口,
    private static final long serialVersionUID = 5457187579070310160L;
    我看不来有什么意义?呵呵
      

  6.   

    此 ColorModel 类支持像素值的两种表示形式。像素值可以为单个 32 位 int,也可以为一个基本类型的数组。Java(tm) Platform 1.0 和 1.1 API 将像素表示为单 byte 或单 int 值。根据此 ColorModel 类用途,可按 int 形式传递像素值参数。Java(tm) 2 Platform API 引入了表示图像的其他类。对于 BufferedImage 或 RenderedImage 对象(基于 Raster 和 SampleModel 类),像素值用单个 int 表示可能不太方便。因此,ColorModel 现在提供了以基本类型数组表示像素值的方法。特定 ColorModel 对象使用的基本类型被称作其转换类型。 当调用采用单个 int 像素参数的方法时,与其像素值不便于表示为单个 int 的图像一起使用的 ColorModel 对象会抛出 IllegalArgumentException。ColorModel 的子类必须指定出现这种情况的条件。对于 DirectColorModel 或 IndexColorModel 对象,不会出现这种情况。
      

  7.   

    楼上的大哥们说得很有道理,但
    这句代码错误的确在于
    ColorModel
    返回的是 ComponentColorModel可是getRed(int );
    好象只针对DirectColorModel.
      

  8.   

    google后:
    原来java在读取properties文件是遇到\就会出现 java.lang.IllegalArgumentException谢谢~