gpt4 book ai didi

java - 在不丢失透明度的情况下在 Java 中调整图像大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:32:09 24 4
gpt4 key购买 nike

我想在不丢失透明度的情况下调整图像(jpg、png、gif)的大小。

我想在调整大小后将调整大小的版本保存到磁盘。

我在谷歌上搜索了很多,但我只找到了失去透明度并将透明空间填充为黑色的解决方案......

我正在寻找可以完成这项工作的代码片段或库 :)

最佳答案

经过研究我发现只有在不将其转换为 ImageIcon 的情况下将其保留为 BufferedImage 才能调整缓冲区图像的大小

我这样解决问题:

public class NewJFrame extends javax.swing.JFrame {

/**
* Creates new form NewJFrame
*/
public NewJFrame() {
try {
initComponents();
BufferedImage c = ImageIO.read(new File("60_Personnel.png"));
JLabel lblMains = new JLabel( new ImageIcon(c));
this.add(lblMains); //add real size
this.add(new JLabel(new ImageIcon((resize(c, 150))))); //add converting image
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
} catch (IOException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}

}

public static BufferedImage resize(Object img, int percent) {
BufferedImage buff = (BufferedImage) img;
return resize(buff, buff.getWidth() * percent / 100, buff.getWidth() * percent / 100);
}

public static BufferedImage resize(BufferedImage img, int newW, int newH) {
Image tmp = img.getScaledInstance(newW, newH, Image.SCALE_SMOOTH);
BufferedImage dimg = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = dimg.createGraphics();
g2d.drawImage(tmp, 0, 0, null);
g2d.dispose();
return dimg;
}

关于java - 在不丢失透明度的情况下在 Java 中调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12552144/

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