Với sự giúp đỡ của phiên bản ImageReader, bạn có thể lấy siêu dữ liệu hình ảnh ở định dạng trung lập, sau đó phân tích cú pháp cho những gì bạn cần. DTD là here.
ImageInputStream iis = ImageIO.createImageInputStream(new File(path));
Iterator it = ImageIO.getImageReaders(iis);
if (!it.hasNext())
{
System.err.println("No reader for this format");
return;
}
ImageReader reader = (ImageReader) it.next();
reader.setInput(iis);
IIOMetadata meta = reader.getImageMetadata(0);
IIOMetadataNode root = (IIOMetadataNode) meta.getAsTree("javax_imageio_1.0");
NodeList nodes = root.getElementsByTagName("HorizontalPixelSize");
if (nodes.getLength() > 0)
{
IIOMetadataNode dpcWidth = (IIOMetadataNode) nodes.item(0);
NamedNodeMap nnm = dpcWidth.getAttributes();
Node item = nnm.item(0);
int xDPI = Math.round(25.4f/Float.parseFloat(item.getNodeValue()));
System.out.println("xDPI: " + xDPI);
}
else
System.out.println("xDPI: -");
if (nodes.getLength() > 0)
{
nodes = root.getElementsByTagName("VerticalPixelSize");
IIOMetadataNode dpcHeight = (IIOMetadataNode) nodes.item(0);
NamedNodeMap nnm = dpcHeight.getAttributes();
Node item = nnm.item(0);
int yDPI = Math.round(25.4f/Float.parseFloat(item.getNodeValue()));
System.out.println("yDPI: " + yDPI);
}
else
System.out.println("yDPI: -");
(Nguồn/Inspiration: David Thielen)
Lưu ý rằng bạn sẽ nhận được một dpi chỉ khi nó là ở đó.
Nếu bạn tự hỏi những gì trong XML Metadata, sử dụng mã này:
StringWriter xmlStringWriter = new StringWriter();
StreamResult streamResult = new StreamResult(xmlStringWriter);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); // http://stackoverflow.com/a/1264872/535646
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
DOMSource domSource = new DOMSource(root);
transformer.transform(domSource, streamResult);
System.out.println (xmlStringWriter);
Nguồn
2014-01-09 17:43:27
hình ảnh gì được bạn làm việc với ai? – mzjn
Tôi cần giải pháp có thể hỗ trợ tất cả các loại hình ảnh. – guhai