如何使用Java调整图片大小?

29 浏览
0 Comments

如何使用Java调整图片大小?

我需要调整PNG、JPEG和GIF文件的大小。如何使用Java实现这一功能?

admin 更改状态以发布 2023年5月24日
0
0 Comments

加载图像后,您可以尝试:\n

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;
    }

0
0 Comments

FWIW,我刚发布了一个简单的Java图片缩放库(托管在GitHub上,使用Apache 2协议),名为imgscalr(可在Maven中央仓库获取)。

该库实现了一些不同的图片缩放方法(包括Chris Campbell的增量方法,具有一些小的增强功能),如果您请求,它将自动为您选择最佳方法,或为您提供最快或最佳外观效果。

使用非常简单,只需一堆静态方法。最简单的用法是:

BufferedImage scaledImage = Scalr.resize(myImage, 200);

所有操作都保持图像的原始比例,因此在这种情况下,您要求imgscalr在200像素宽和200像素高的范围内调整图像大小,并且默认情况下,它将自动选择最佳外观效果和最快的方法,因为没有指定。

我认为这一开始看起来像自我宣传(确实如此),但我花了相当多的时间去搜索这个确切的主题,并且不断地得到不同的结果/方法/想法/建议,于是决定坐下来编写一个简单的实现,它将解决80-85%的用例,其中您拥有一张图像,并且可能希望为其缩略图 - 要么尽可能快,要么尽可能好看(对于那些尝试过的人,您会注意到即使使用BICUBIC插值将Graphics.drawImage绘制到足够小的图像上,它看起来仍然像垃圾)。

0