0
点赞
收藏
分享

微信扫一扫

jfreechart 生成JPEG格式图片出现不正常的背景色


版本1:jfreechart-1.0.9

 

生成图片代码如下:

 

 

Java代码 

1. ChartUtilities.writeChartAsJPEG(out, chart, 500, 400);

 

得到的图片显示如下,出现不正常的红色背景

 

 

jfreechart-1.0.9生成图片各主要代码如下:

 

JFreeChart类

 

Java代码 

 

1. public BufferedImage createBufferedImage(int width, int height, ChartRenderingInfo info)
2. {
3. return createBufferedImage(width, height, 2, info);
4. }
5.
6. public BufferedImage createBufferedImage(int width, int height, int imageType, ChartRenderingInfo info)
7. {
8. BufferedImage image = new BufferedImage(width, height, imageType);
9. Graphics2D g2 = image.createGraphics();
10. draw(g2, new Rectangle2D.Double(0.0D, 0.0D, width, height), null, info);
11. g2.dispose();
12. retur

n image;

  1. }

 

如上所述,创建BufferedImage的时候,使用的iamgeType是2,也就是BufferedImage.TYPE_INT_ARGB格式。

 

解决方法一:手动设置imageType为1(即BufferedImage.TYPE_INT_RGB),如下代码:

 

 

Java代码 

 

1. BufferedImage bi = chart.createBufferedImage(500, 400, 1, null);
2. ImageIO.write(bi, "jpeg", out);

 

解决方法二:升级jfreechart到1.0.10,该版本中JFreeChart中的createBufferedImage代码如下:

 

 

Java代码 

1. public static void writeChartAsJPEG(OutputStream out, float quality, JFreeChart chart, int width, int height, ChartRenderingInfo info)
2. throws IOException
3. {
4. if (chart == null) {
5. throw new IllegalArgumentException("Null 'chart' argument.");
6. }
7. BufferedImage image = chart.createBufferedImage(width, height, 1, info);
8. EncoderUtil.writeBufferedImage(image, "jpeg", out, quality);
9. }

 1.0.10版本在调用JFreeChart的createBufferedImage默认使用了imageType为BufferedImage.TYPE_INT_RGB

 

调整后生成的图片如下:

 

 

举报

相关推荐

0 条评论