我想将使用JFreeChart创建的图表的PNG嵌入到PDF文档中。这里的问题是,图表的质量很差。我的目标是拥有300 DPI的PNG。我搜索了近一个小时,但我找不到解决方案。JFreeChart图表质量更高
有没有办法将生成的图表从JFreeCharts作为PNG(或JPEG)以300 DPI导出?
我想将使用JFreeChart创建的图表的PNG嵌入到PDF文档中。这里的问题是,图表的质量很差。我的目标是拥有300 DPI的PNG。我搜索了近一个小时,但我找不到解决方案。JFreeChart图表质量更高
有没有办法将生成的图表从JFreeCharts作为PNG(或JPEG)以300 DPI导出?
自版本1.4开始,JFreeChart
使用ImageIO
提供的png
编码器。或者,您可以查看com.keypoint.PngEncoder
,其中包括setDpi()
,等人。另请参阅org.jfree.chart.encoders.SunPNGEncoderAdapter
和org.jfree.chart.encoders.KeypointPNGEncoderAdapter
。
而且看看org.jfree.chart.ChartUtilities#writeScaledChartAsPNG
如果您提供的2比例因子,图表会以两倍的分辨率呈现。
使用比例因子2将字体大小减少2.因此,它不是一个完整的解决方案。 – Uli
您可以使用XChart为此,因为出口Charts
在某些DPI的高分辨率是自version 2.2.0以来的新功能。代码看起来像这样:
double[] xData = new double[] { 0.0, 1.0, 2.0 };
double[] yData = new double[] { 2.0, 1.0, 0.0 };
// Create Chart
Chart chart = QuickChart.getChart("Sample Chart", "X", "Y", "y(x)", xData, yData);
// Show it
new SwingWrapper(chart).displayChart();
// Save it
BitmapEncoder.savePNG(chart, "./Sample_Chart.png"); // default 72 DPI
BitmapEncoder.savePNGWithDPI(chart, "./Sample_Chart_300_DPI.png", 300);
声明:我是XChart的首席开发人员。我最近面临与你完全相同的问题。我需要300 DPI的图表来发表科学出版物。欢迎反馈!
谢谢herrtim,XCharts看起来很棒。我一定会考虑将它用于我的下一个项目。 –
你如何导出图表? – peshkira
@peshkira目前与ChartUtilities.saveChartAsPNG(新文件(“/用户/ myuser/test.png”),demo.getChart(),1000,1000);但我当然愿意接受任何符合我的要求的建议:) –
只需将它保存在更大的尺寸? 1000x1000应该为您提供300dpi的3in x 3图像。 – millimoose