docs: public static Map<String, String> readImageData(IIOImage oimage) {
          Map<String, String> dict = new HashMap<String, String>();
  
          IIOMetadata imageMetadata = oimage.getMetadata();
          if (imageMetadata != null) {
              IIOMetadataNode dimNode = (IIOMetadataNode) imageMetadata.getAsTree("javax_imageio_1.0");
              NodeList nodes = dimNode.getElementsByTagName("HorizontalPixelSize");
              int dpiX;
              if (nodes.getLength() > 0) {
                  float dpcWidth = Float.parseFloat(nodes.item(0).getAttributes().item(0).getNodeValue());
                  dpiX = (int) Math.round(25.4f / dpcWidth);
              } else {
                  dpiX = Toolkit.getDefaultToolkit().getScreenResolution();
              }
              dict.put("dpiX", String.valueOf(dpiX));
  
              nodes = dimNode.getElementsByTagName("VerticalPixelSize");
              int dpiY;
              if (nodes.getLength() > 0) {
                  float dpcHeight = Float.parseFloat(nodes.item(0).getAttributes().item(0).getNodeValue());
                  dpiY = (int) Math.round(25.4f / dpcHeight);
              } else {
                  dpiY = Toolkit.getDefaultToolkit().getScreenResolution();
              }
              dict.put("dpiY", String.valueOf(dpiY));
          }
  
          return dict;
      }