本文共 1597 字,大约阅读时间需要 5 分钟。
- private BufferedImage gridImage;
- ...
-
- private void saveGridImage(File output) throws IOException {
- output.delete();
-
- final String formatName = "png";
-
- for (Iterator<ImageWriter> iw = ImageIO.getImageWritersByFormatName(formatName); iw.hasNext();) {
- ImageWriter writer = iw.next();
- ImageWriteParam writeParam = writer.getDefaultWriteParam();
- ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);
- IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, writeParam);
- if (metadata.isReadOnly() || !metadata.isStandardMetadataFormatSupported()) {
- continue;
- }
-
- setDPI(metadata);
-
- final ImageOutputStream stream = ImageIO.createImageOutputStream(output);
- try {
- writer.setOutput(stream);
- writer.write(metadata, new IIOImage(gridImage, null, metadata), writeParam);
- } finally {
- stream.close();
- }
- break;
- }
- }
-
- private void setDPI(IIOMetadata metadata) throws IIOInvalidTreeException {
-
-
- double dotsPerMilli = 1.0 * DPI / 10 / INCH_2_CM;
-
- IIOMetadataNode horiz = new IIOMetadataNode("HorizontalPixelSize");
- horiz.setAttribute("value", Double.toString(dotsPerMilli));
-
- IIOMetadataNode vert = new IIOMetadataNode("VerticalPixelSize");
- vert.setAttribute("value", Double.toString(dotsPerMilli));
-
- IIOMetadataNode dim = new IIOMetadataNode("Dimension");
- dim.appendChild(horiz);
- dim.appendChild(vert);
-
- IIOMetadataNode root = new IIOMetadataNode("javax_imageio_1.0");
- root.appendChild(dim);
-
- metadata.mergeTree("javax_imageio_1.0", root);
- }
代码来源:
其中DPI就是你要设置的值,java中默认是72,如果需要打印图片,可能就要设置为300
INCH_2_CM表示1英寸等于多少厘米,这里就是2.54
转载地址:http://wybvi.baihongyu.com/