【问题标题】:Java: Resize image doesn't workJava:调整图像大小不起作用
【发布时间】:2015-12-19 10:08:31
【问题描述】:

我不知道为什么这种方法不能调整图像大小。没有错误发生(如果有,我有一个例外):

   private static void resizeImage(int width, int height) {
        try {
            BufferedImage rawImg = ImageIO.read(new File("%imgg%.png"));
            int gamlaWidth = rawImg.getWidth();
            int gamlaHeight = rawImg.getHeight();
            BufferedImage dimg = new BufferedImage(width, height, rawImg.getType());
            Graphics2D g = rawImg.createGraphics();
            g.drawImage(rawImg, 0, 0, 114, 114, null);
            g.dispose();  
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Ett fel uppstod:\n" + e, "Felmeddelande", 0);
        }
    }  

为什么这段代码没有改变任何东西?我希望大小为 114x114。

【问题讨论】:

    标签: java resize


    【解决方案1】:

    您总是可以使用此代码来调整图像的大小。

    Image smallerImage = null;
    ImageIcon smallerImageIcon = null;
    public void resizeImage(int width, int height, String image)
    
    {
        ImageIcon originalImage = new ImageIcon(image);
        smallerImage = originalImage.getImage().getScaledInstance(width,height,0);
        smallerImageIcon = new ImageIcon(smallerImage);
    }
    

    如果您希望图像 %imgg%.png 为 114 x 114,请使用此方法,您可以像这样调用该方法

    resizeImage(114, 114, "%imgg%.png");
    

    对于您的代码,我认为问题可能出在您将其设置为 114 x 114 的位置,因为该尺寸与缩放后的尺寸不同。

    试试

    BufferedImage createResizedCopy(Image originalImage, int scaledWidth, int scaledHeight, boolean preserveAlpha)
    {
        System.out.println("resizing...");
        int imageType = preserveAlpha ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
        BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight, imageType);
        Graphics2D g = scaledBI.createGraphics();
        if (preserveAlpha) {
            g.setComposite(AlphaComposite.Src);
        }
        g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null); 
        g.dispose();
        return scaledBI;
    }
    

    使用

    ImageIcon originalImage = new ImageIcon("%imgg%.png");
    Image resizedImage = createResizedCopy(originalImage.getImage(),114,114,true);
    

    here

    【讨论】:

    • 但是如何用调整大小的新图像替换旧图像?
    • @Stardox 对其进行了编辑,因此您在方法之前声明图像,然后运行该方法,然后调用正确的变量
    • @Stardox 我还添加了如何使用第二种方法
    猜你喜欢
    • 1970-01-01
    • 2014-05-13
    • 2014-08-29
    • 2014-05-12
    • 2013-04-04
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多