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

35 篇文章 1 订阅
10 篇文章 0 订阅
本文介绍在使用JFreeChart 1.0.9版本生成图表时遇到的红色背景问题及解决方案。通过修改BufferedImage的imageType参数或升级至1.0.10版本,可避免图片出现异常红色背景。
摘要由CSDN通过智能技术生成

版本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.      return image;  
  13. }  

 

如上所述,创建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

 

调整后生成的图片如下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值