2012-11-21 57 views
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; 
      } 

回答

0

添加的dpi照片模糊並不能使它更清晰,因爲你的圖像的像素只是分裂,但不會是在圖像中創建的任何更多的細節。然而,有一些算法可以幫助使圖片看起來更加銳利。

+0

謝謝你湯姆,源圖像有幾行顯示,就像u變焦時被破壞一樣。出於這個原因,我想將DPI增加到300,這樣即使在放大時也看起來很整齊。你能告訴我幾個方法來實現這一目標嗎? – HarshaSK

+0

可能是最好的,我可以找到 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

+0

好吧,讓我更清楚我的要求。 我使用java代碼創建圖像。它基本上是文字,線條,顏色和邊框。當它被創建時,它的96 DPI。我的要求是保留圖像的大小,並將DPI增加到300或更多,以便放大時圖像的清晰度不會丟失。 請給我一個方法來實現它。 – HarshaSK