有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在调整大小后,如何将java中图像的DPI从96更改为300?

我有一个JPEG图像,在调整它的大小后,我想在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;         }

共 (1) 个答案

  1. # 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();