(ImageWriter writer, ImageWriteParam param, double dpi)
| 641 | |
| 642 | |
| 643 | @SuppressWarnings("SameParameterValue") |
| 644 | static private IIOMetadata imageioDPI(ImageWriter writer, ImageWriteParam param, double dpi) { |
| 645 | // http://stackoverflow.com/questions/321736/how-to-set-dpi-information-in-an-image |
| 646 | ImageTypeSpecifier typeSpecifier = |
| 647 | ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB); |
| 648 | IIOMetadata metadata = |
| 649 | writer.getDefaultImageMetadata(typeSpecifier, param); |
| 650 | |
| 651 | if (!metadata.isReadOnly() && metadata.isStandardMetadataFormatSupported()) { |
| 652 | // for PNG, it's dots per millimeter |
| 653 | double dotsPerMilli = dpi / 25.4; |
| 654 | |
| 655 | IIOMetadataNode horiz = new IIOMetadataNode("HorizontalPixelSize"); |
| 656 | horiz.setAttribute("value", Double.toString(dotsPerMilli)); |
| 657 | |
| 658 | IIOMetadataNode vert = new IIOMetadataNode("VerticalPixelSize"); |
| 659 | vert.setAttribute("value", Double.toString(dotsPerMilli)); |
| 660 | |
| 661 | IIOMetadataNode dim = new IIOMetadataNode("Dimension"); |
| 662 | dim.appendChild(horiz); |
| 663 | dim.appendChild(vert); |
| 664 | |
| 665 | IIOMetadataNode root = new IIOMetadataNode("javax_imageio_1.0"); |
| 666 | root.appendChild(dim); |
| 667 | |
| 668 | try { |
| 669 | metadata.mergeTree("javax_imageio_1.0", root); |
| 670 | return metadata; |
| 671 | |
| 672 | } catch (IIOInvalidTreeException e) { |
| 673 | System.err.println("Could not set the DPI of the output image"); |
| 674 | e.printStackTrace(); |
| 675 | } |
| 676 | } |
| 677 | return null; |
| 678 | } |
| 679 | |
| 680 | |
| 681 | // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
no test coverage detected