2014-05-05 70 views
1

我有一個JPEG圖像,在調整大小後,我想將Java中DPI從96更改爲300。我的代碼:如何在調整大小後在java中將DPI從96更改爲300?

public BufferedImage resizeImageWithHint(BufferedImage originalImage, int type) { 
    BufferedImage resizedImage = new BufferedImage(177, 177, type); 
    Graphics2D g = resizedImage.createGraphics(); 
    g.drawImage(originalImage, 0, 0, 177, 177, null); 
    g.dispose(); 
    g.setComposite(AlphaComposite.Src); 
    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); 
    g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); 
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); //g.translate(4, 4);  return resizedImage;   } 
+2

嘗試理解的圖像和DPI的大小有關,因爲你換一個,所以其他的影響。 – MadProgrammer

+0

您無法更改圖像的DPI。您必須將圖像放大到300/96像素。 –

+0

@Gilbert Le Blanc感謝您的評論,但我想將200 * 200像素圖像轉換爲177 * 177像素,並使用300 dpi。在java中怎麼可能? – user3603284

回答

1
BufferedImage image = ImageIO.read(new File(path)); 
JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(new FileOutputStream(new File(path))); 
JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(image); 
jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH); 
jpegEncoder.setJPEGEncodeParam(jpegEncodeParam); jpegEncodeParam.setQuality(0.75f, false); 
jpegEncodeParam.setXDensity(300); jpegEncodeParam.setYDensity(300); 
jpegEncoder.encode(image, jpegEncodeParam); 
image.flush(); 
+0

它看起來像來自'com.sun.image.codec.jpeg'包 - 是這些公共API嗎? –

相關問題