gpt4 book ai didi

java - 使 Java 图像适合 JFrame

转载 作者:行者123 更新时间:2023-11-29 06:16:32 25 4
gpt4 key购买 nike

我正在尝试显示大于 JFrame 尺寸的图像。如果我尝试将图像调整得更小,图像质量就会下降。

如果我将图像放大,质量不会丢失。这是 Java 图像包中的正常行为吗?

我想我想弄清楚的是,我在减小图像大小时可能做错了什么。那么 Java 是否提供了一种在不损失图像质量的情况下自动执行此操作的方法?

与 JButtons 相同的行为,其中 java 自动调整 JPanel 中 JButton 占用的空间。

      bufferedImage = resize(bufImage,500,600);

ImageIcon imageIcon = new ImageIcon(bufferedImage);

resizedIMage = imageIcon.getImage();

实际调整大小如下。我从网上拿来的。

      private static BufferedImage resize(BufferedImage image, int width, int      height) {
int type = image.getType() == 0? BufferedImage.TYPE_INT_ARGB : image.getType();
BufferedImage resizedImage = new BufferedImage(width, height, type);
Graphics2D g = resizedImage.createGraphics();
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.drawImage(image, 0, 0, width, height, null);
g.dispose();
return resizedImage;
}

最佳答案

如果您使用的是 Java 5 或更新版本,您可以尝试使用 RenderingHints.VALUE_INTERPOLATION_BICUBIC 作为插值提示。

这篇文章中对 Java2D 的不同缩放行为有非常详细的描述:perils-of-getScaledInstance

它包含您可以期望通过 Java 中可用的不同方法看到的不同缩小结果的示例。

它还提供了使用多步方法缩小图像的示例代码,这似乎比 VALUE_INTERPOLATION_BILINEAR 产生了更好的结果。

关于java - 使 Java 图像适合 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4880195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com