gpt4 book ai didi

Java ImageIO.write() 在保存期间更改质量

转载 作者:搜寻专家 更新时间:2023-11-01 03:40:21 26 4
gpt4 key购买 nike

我正在编写一个图像库来获得乐趣,但我遇到了一个我似乎无法解决的问题。该类非常简单:拍照、处理、通过 JFrame 显示,最后将其保存为 BufferedImage (javax.imageio.ImageIO)。这是我的图片通过 JFrame 的样子(这是我的 ColorEnhance 类......在 Drustan 星云上):

The image as seen from the JFrame

这是保存的版本(一个 png,但 ImageIO.write() 支持的所有类型看起来都一样):

The image as seen after it has been saved

我不确定变化发生在哪里,但是当我通过我的模糊方法运行它时,整行在 png 中从无到有出现...无论如何,这里有一些代码:

public void writeToFile(BufferedImage finalPic, String nameToAppend)
{
String temp=fileName.replace(".", nameToAppend+".");
String ext=fileName.substring(fileName.indexOf(".")+1);
File file=new File(temp);
try
{
ImageIO.write(finalPic, ext.toUpperCase(), file);
System.out.println("Successfully saved to: "+temp);
} catch (Exception e) { e.getMessage(); }
}

public void displayImage(String titleName)
{
ImageIcon icon = new ImageIcon(newPic);
JFrame frame = new JFrame(titleName);
JLabel label = new JLabel(icon);
label.setIcon(icon);
frame.getContentPane().add(label, BorderLayout.CENTER);
frame.setSize(WIDTH, HEIGHT+22);
frame.setVisible(true);
}

最后一件事是保存对于某些处理类比其他处理类更好,如果您需要查看更多代码,请询问,谢谢

最佳答案

尝试使用来自 Apache XML Graphics CommonsPNGImageEncoder :

BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); 
PNGImageEncoder encoder = new PNGImageEncoder(new FileOutputStream("file.png"), null);
encoder.encode((RenderedImage) image);

关于Java ImageIO.write() 在保存期间更改质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16369727/

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