我正在写一个图像库以获得乐趣,我遇到了一个我似乎无法解决的问题。该类非常简单:拍照,处理它,通过JFrame显示它,最后将其保存为BufferedImage(javax.imageio.ImageIO)。这是我的图片通过JFrame看起来的样子(这是我的ColorEnhance类......在Drustan星云上):
以下是保存的版本(png,但ImageIO.write()支持的所有类型看起来都一样):
我不确定发生了什么变化,但是当我通过模糊方法运行时,整条线条在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);
}
最后一件事是,对于某些处理类,保存比其他处理类更好,如果你需要再查看更多代码,谢谢
答案 0 :(得分:1)
尝试使用Apache XML Graphics Commons中的PNGImageEncoder
:
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
PNGImageEncoder encoder = new PNGImageEncoder(new FileOutputStream("file.png"), null);
encoder.encode((RenderedImage) image);