1
我將圖像的DPI從96 DPI增加到299.99 DPI。但它對圖像沒有任何影響。縮放圖像仍然模糊。如何增加DPI以使圖像清晰度增加?如何增加圖片DPI?
字符串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;
}
謝謝你湯姆,源圖像有幾行顯示,就像u變焦時被破壞一樣。出於這個原因,我想將DPI增加到300,這樣即使在放大時也看起來很整齊。你能告訴我幾個方法來實現這一目標嗎? – HarshaSK
可能是最好的,我可以找到 http://stackoverflow.com/questions/6575366/how-to-improve-image-quality-in-matlab http://photo.stackexchange.com/questions/12788/is-它可能增加圖像的像素密度 – 2012-11-23 11:25:22
好吧,讓我更清楚我的要求。 我使用java代碼創建圖像。它基本上是文字,線條,顏色和邊框。當它被創建時,它的96 DPI。我的要求是保留圖像的大小,並將DPI增加到300或更多,以便放大時圖像的清晰度不會丟失。 請給我一個方法來實現它。 – HarshaSK