1

我将 jFreeChart 保存到 jpeg 文件的方式是:

JFreeChart chart = ChartFactory.createXYLineChart(
"Hysteresis Plot", // chart title
"Pounds(lb)", // domain axis label
"Movement(inch)", // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
false, // include legend
true, // tooltips
false // urls
); 

然后:

 image=chart.createBufferedImage( 300, 200);

图像显示为: 在此处输入图像描述

我的保存功能是:

public static void saveToFile(BufferedImage img)
    throws FileNotFoundException, IOException
    {
        FileOutputStream fos = new FileOutputStream("D:/Sample.jpg");
        JPEGImageEncoder encoder2 =
        JPEGCodec.createJPEGEncoder(fos);
        JPEGEncodeParam param2 =
        encoder2.getDefaultJPEGEncodeParam(img);
        param2.setQuality((float) 200, true);
        encoder2.encode(img,param2);
        fos.close();
    }

我称它为:

try{
            saveToFile(image);
           }catch(Exception e){
           e.printStackTrace();
         }

保存的图像显示为:

在此处输入图像描述

任何建议,我错的地方或如何以它的显示方式保存它,或者我可能需要另存为.png。谁能告诉我如何保存为.png?

谢谢

4

3 回答 3

6

一个简单的解决方案:

public static void saveToFile(BufferedImage img)
    throws FileNotFoundException, IOException
    {

        File outputfile = new File("D:\\Sample.png");
    ImageIO.write(img, "png", outputfile);
    }

保存图像,它的显示方式。

于 2013-02-26T18:13:24.180 回答
1

我宁愿建议不要使用 ImageIo.write 来保存图像,而最好使用以下函数:

ChartUtilities.saveChartAsJPEG("name of your file", jfreechart, lenght, width);

因为这样您就可以管理图片的大小,还可以保存没有过滤器的图片。

于 2015-10-01T17:52:51.977 回答
1

这是一个很好的例子,说明如何做到这一点。

File imageFile = new File("C:\\LineChart.png");
int width = 640;
int height = 480;
try {
    ChartUtilities.saveChartAsPNG(imageFile, chart, width, height);
} catch (IOException ex) {
    System.err.println(ex);
}
于 2016-11-03T15:30:06.650 回答