(ImageWriter writer, ImageWriteParam param, double dpi)
| 3287 | |
| 3288 | |
| 3289 | private IIOMetadata imageioDPI(ImageWriter writer, ImageWriteParam param, double dpi) { |
| 3290 | // http://stackoverflow.com/questions/321736/how-to-set-dpi-information-in-an-image |
| 3291 | ImageTypeSpecifier typeSpecifier = |
| 3292 | ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB); |
| 3293 | IIOMetadata metadata = |
| 3294 | writer.getDefaultImageMetadata(typeSpecifier, param); |
| 3295 | |
| 3296 | if (!metadata.isReadOnly() && metadata.isStandardMetadataFormatSupported()) { |
| 3297 | // for PNG, it's dots per millimeter |
| 3298 | double dotsPerMilli = dpi / 25.4; |
| 3299 | |
| 3300 | IIOMetadataNode horiz = new IIOMetadataNode("HorizontalPixelSize"); |
| 3301 | horiz.setAttribute("value", Double.toString(dotsPerMilli)); |
| 3302 | |
| 3303 | IIOMetadataNode vert = new IIOMetadataNode("VerticalPixelSize"); |
| 3304 | vert.setAttribute("value", Double.toString(dotsPerMilli)); |
| 3305 | |
| 3306 | IIOMetadataNode dim = new IIOMetadataNode("Dimension"); |
| 3307 | dim.appendChild(horiz); |
| 3308 | dim.appendChild(vert); |
| 3309 | |
| 3310 | IIOMetadataNode root = new IIOMetadataNode("javax_imageio_1.0"); |
| 3311 | root.appendChild(dim); |
| 3312 | |
| 3313 | try { |
| 3314 | metadata.mergeTree("javax_imageio_1.0", root); |
| 3315 | return metadata; |
| 3316 | |
| 3317 | } catch (IIOInvalidTreeException e) { |
| 3318 | System.err.println("Could not set the DPI of the output image"); |
| 3319 | e.printStackTrace(); |
| 3320 | } |
| 3321 | } |
| 3322 | return null; |
| 3323 | } |
| 3324 | |
| 3325 | |
| 3326 | protected String[] saveImageFormats; |
no test coverage detected