Image 如何提高图像DPI?
我将图像的DPI从96 DPI增加到299.99 DPI。但是它对图像没有任何影响。缩放时图像仍然模糊。如何增加DPI以提高图像清晰度 String dotsPerMeter=String.valueOf((int)(300/0.0254))//300是否需要新闻部 迭代器图像编写器= getImageWritersByFormatName(“png”)Image 如何提高图像DPI?,image,dpi,Image,Dpi,我将图像的DPI从96 DPI增加到299.99 DPI。但是它对图像没有任何影响。缩放时图像仍然模糊。如何增加DPI以提高图像清晰度 String dotsPerMeter=String.valueOf((int)(300/0.0254))//300是否需要新闻部 迭代器图像编写器= getImageWritersByFormatName(“png”) 将Dpi添加到模糊图片不会使其更清晰,因为图像的像素刚刚分割,但不会在图像中创建更多细节。 不过,有一些算法有助于使图片看起来更清晰。谢谢你,
将Dpi添加到模糊图片不会使其更清晰,因为图像的像素刚刚分割,但不会在图像中创建更多细节。
不过,有一些算法有助于使图片看起来更清晰。谢谢你,汤姆,当你缩放时,源图像显示的线条很少,就像断了一样。出于这个原因,我想将DPI增加到300,这样即使在u缩放时,它看起来也很整洁。你能给我建议一些方法来达到这个目的吗?也许是我能找到的最好的方法好吧,让我更清楚我的要求。我使用java代码创建了一个图像。它基本上包括文字、线条、颜色和边框。当它被创建时,它的分辨率为96 DPI。我的要求是保留图像的大小,并将DPI增加到300或更多,以便在缩放图像时不会丢失图像的清晰度。请给我一个实现它的方法。
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;
}