【问题标题】:How to increase Image DPI?如何提高图像 DPI?
【发布时间】:2012-11-21 18:43:52
【问题描述】:

我将图像的 DPI 从 96 DPI 增加到 299.99 DPI。但它对图像没有任何影响。缩放时图像仍然模糊。如何提高 DPI 以提高图像清晰度?

String dotsPerMeter = String.valueOf((int) (300 / 0.0254));//300是需要的dpi 迭代器 imageWriters = ImageIO.getImageWritersByFormatName("png");

            while (imageWriters.hasNext()) {
                    ImageWriter iw = (ImageWriter)imageWriters.next();

                    ImageWriteParam iwp = iw.getDefaultWriteParam();
                    IIOMetadata metadata = iw.getDefaultImageMetadata(new ImageTypeSpecifier(image), iwp);

                    String pngFormatName = metadata.getNativeMetadataFormatName();
                    IIOMetadataNode pngNode =
                            (IIOMetadataNode) metadata.getAsTree(pngFormatName);

                    IIOMetadataNode physNode = null;
                    NodeList childNodes = pngNode.getElementsByTagName("pHYs");
                    if (childNodes.getLength() == 0) {
                            physNode = new IIOMetadataNode("pHYs");
                            pngNode.appendChild(physNode);
                    } else if (childNodes.getLength() == 1) {
                            physNode = (IIOMetadataNode) childNodes.item(0);
                    } else {
                            throw new IllegalStateException("Don't know what to do with multiple pHYs nodes");
                    }
                    physNode.setAttribute("pixelsPerUnitXAxis", dotsPerMeter);
                    physNode.setAttribute("pixelsPerUnitYAxis", dotsPerMeter);
                    physNode.setAttribute("unitSpecifier", "meter");
                    try {
                            metadata.setFromTree(pngFormatName, pngNode);
                            IIOImage iioImage = new IIOImage(image, null, metadata);
                            File file = new File(KIT_ID + "_" + KIT_VER + "_newDPI.png");
                            ImageOutputStream ios = ImageIO.createImageOutputStream(file);

                            iw.setOutput(ios);                            
                            iw.write(iioImage);
                            ios.flush();
                            ios.close();
                    } catch (Exception e) {
                            e.printStackTrace();
                            continue;
                    }

                    break;
            }

【问题讨论】:

    标签: image dpi


    【解决方案1】:

    为模糊的图片添加 Dpi 并不会使其更清晰,因为图像的像素刚刚分裂,但不会在图像中创建更多细节。 然而,有一些算法可以帮助使图片看起来更清晰。

    【讨论】:

    • 谢谢你,Tom,源图像有几行,当你缩放时显示像破碎一样。出于这个原因,我想将 DPI 增加到 300,这样即使在你缩放时它看起来也很整洁。你能建议我一些方法来实现这一点吗?
    • 好的,让我更清楚我的要求。我使用 java 代码创建了一个图像。它基本上是文本、线条、颜色和边框。当它被创建时,它的 96 DPI。我的要求是保留图像的大小,并将 DPI 增加到 300 或更高,以便在缩放时不会丢失图像的清晰度。请建议我实现它的方法。
    猜你喜欢
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 2020-06-23
    • 1970-01-01
    相关资源
    最近更新 更多