How to get the dpi of an image(Java)

后端 未结 7 1959
无人及你
无人及你 2021-01-06 01:51

In c#, we can use Image.HorizontalResolution and Image.VerticalResolution.

But in java, how to get it?

I found ImageInfo.java, but it only supp

7条回答
  •  夕颜
    夕颜 (楼主)
    2021-01-06 02:02

    I found this example interesting:

    ByteArrayInputStream bis = new 
       ByteArrayInputStream(uploadedFile.getContents());
    Iterator readers = ImageIO.getImageReadersByFormatName("jpg");
    ImageReader reader = (ImageReader) readers.next();
    IIOMetadata meta = reader.getImageMetadata(0);
    Element tree = (Element) meta.getAsTree("javax_imageio_jpeg_image_1.0");
    Element jfif = (Element)tree.getElementsByTagName("app0JFIF").item(0);
    int dpiH = Integer.parseInt( jfif.getAttribute("Xdensity") );
    int dpiV = Integer.parseInt( jfif.getAttribute("Ydensity") );
    
    /* now test that (dpiH == dpiV) */
    /* imports are:
    import javax.imageio.ImageIO;
    import javax.imageio.ImageReadParam;
    import javax.imageio.ImageReader;
    import javax.imageio.metadata.IIOMetadata;
    import javax.imageio.stream.ImageInputStream;
    import org.primefaces.model.UploadedFile;
    import org.w3c.dom.Element;
    */
    

提交回复
热议问题