有 Java 编程相关的问题?

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

java图像缩小问题

我需要从源图像到目标图像重新调整大小,这是我已经使用以下代码所做的

public static BufferedImage getScaledSampledFilteredImage(
            BufferedImage img, int targetWidth, int targetHeight,
            boolean higherQuality) {

        ResampleOp resampleOp = new ResampleOp(targetWidth, targetHeight);
        resampleOp.setUnsharpenMask(AdvancedResizeOp.UnsharpenMask.VerySharp);
        resampleOp.setUnsharpenMask(AdvancedResizeOp.UnsharpenMask.Soft);
        BufferedImage rescaledImage = resampleOp.filter(img, null);

        return rescaledImage;
    }

我正在使用

Image Scaling library

但正如你们看到的,我得到的是虚线,而不是连续线

谁能指导我如何实现目标

谢谢! 米希尔·帕雷克

Original Image

target image


共 (2) 个答案

  1. # 1 楼答案

    我不知道这对你是否有用,但当我想重新缩放图像时,我正在使用这个功能:

    public BufferedImage scaleImage(int WIDTH, int HEIGHT, String filename) {
            BufferedImage bi = null;
            try {
                ImageIcon ii = new ImageIcon(filename);//path to image
                bi = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
                Graphics2D g2d = (Graphics2D) bi.createGraphics();
                g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));
                g2d.drawImage(ii.getImage(), 0, 0, WIDTH, HEIGHT, null);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
            return bi;
        }
    

    希望这对你有帮助

  2. # 2 楼答案

    您需要设置抗锯齿:

    clearBuffer = new BufferedImage(img.getWidth(null),
                                img.getHeight(null), BufferedImage.TYPE_INT_RGB);
                Graphics2D graphics = clearBuffer.createGraphics();
                graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                    RenderingHints.VALUE_INTERPOLATION_BICUBIC);
                graphics.setRenderingHint(RenderingHints.KEY_RENDERING,
                    RenderingHints.VALUE_RENDER_QUALITY);
                graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON);
                graphics.drawImage(img, 0, 0, null);