com.sun.image.codec.jpeg.JPEGImageDecoder decoder = null;
try {
decoder = JPEGCodec.createJPEGDecoder(new FileInputStream("F:/test/withExifAndIptc.jpg"));
JPEGDecodeParam param = decoder.getJPEGDecodeParam(); 
                            System.out.println(param);
int w = param.getWidth();
int xDensity = param.getXDensity();
int dpi = w / xDensity ;
System.out.println("dpi=========>"+dpi);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();

为什么我的param得到的null?

解决方案 »

  1.   

    没用过这个,不知道有帮助没
    http://hi.baidu.com/good9006/blog/item/7a80bff953bc245c242df24f.html
      

  2.   

    lz用InputStream流读取吧,用流读取是没问题的
      

  3.   

    那个问题我搞清楚了,
    JPEGImageDecoder jpegDecoder = JPEGCodec.createJPEGDecoder(new FileInputStream("F:/test/0810-新欢总是最爱-ol(CMYK+600dpi).jpg"));
    BufferedImage image = jpegDecoder.decodeAsBufferedImage();
    JPEGDecodeParam decodeParam = jpegDecoder.getJPEGDecodeParam();
    System.out.println("w value = ====>"+decodeParam.getWidth());
    System.out.println("XDensity= ====>"+decodeParam.getXDensity());
    但是为什么会出现这种错误呢
    java.lang.IllegalArgumentException: No APP0 er present
    at sun.awt.image.codec.JPEGParam.getXDensity(JPEGParam.java:789)
    at com.testImage.ImageDpi.main(ImageDpi.java:60)