gpt4 book ai didi

java - 如何使用透明填充缩放 Graphics2D 图像

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:49:58 29 4
gpt4 key购买 nike

我正在尝试编写一个小方法,该方法采用 BufferedImage 图像和新的宽度和高度,并通过向左/右或顶部添加透明边框来缩放图像以保持纵横比/底部取决于图像。缩放效果很好,但就我的生活而言,我无法让边框变得透明。

到目前为止我有 following code posted on pastebin.com缩放效果很好。

我读了很多手册和其他 SO 问题都无济于事。我尝试了多种填充、复合类型、图像类型等的排列组合。有时我会得到蓝色背景,有时是白色背景,但它似乎从来都不是透明的。

BufferedImage newImg = new BufferedImage(newWidth, newHeight, img.getType());
Graphics2D g = newImg.createGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, newWidth, newHeight);
g.drawImage(img, x, y, x + scaledWidth, y + scaledHeight, 0, 0,
currentWidth, currentHeight, Color.WHITE, null);
g.dispose();
return newImg;

知道我需要调用什么 Graphics2D 才能使 Color.WHITE 背景透明在新图像上绘制旧图像吗?感谢您的帮助。

编辑:

事实证明,我遇到的问题是我试图用 JPEG 图像生成透明颜色。 JPEG 不支持透明度。呃。

最佳答案

我刚刚试用了一下,效果很好。

只需将 Color.WHITE 替换为 new Color(0, 0, 0, 0),将 img.getType() 替换为 BufferedImage.TYPE_INT_ARGB


BufferedImage img = ImageIO.read(new File("image.png"));
BufferedImage outImage = scaleWithPadding(img, 300, 100);
ImageIO.write(outImage, "png", new File("newImage.png"));

image.png: (204x53)

enter image description here

newImage.png: (300x100)

enter image description here

关于java - 如何使用透明填充缩放 Graphics2D 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15070343/

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