2011-03-11 87 views
4

是否有可能将图像/ BufferedImage转换为JFreeChart?JFreeChart&Image

+0

要投射/图像转换成图表?我不明白这是怎么工作的 – klonq 2011-03-11 13:57:56

+0

你想用Jfreechart制作图片/ BufferedImages吗? – 2011-03-11 18:03:08

回答

14

将图像投射到JFree不是可能的。要从JFreechart创建图像,您可以执行以下操作:

BufferedImage objBufferedImage=objJFreechart.createBufferedImage(600,800); 
ByteArrayOutputStream bas = new ByteArrayOutputStream(); 
     try { 
      ImageIO.write(objBufferedImage, "png", bas); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

byte[] byteArray=bas.toByteArray(); 

这会创建字节[]。

现在您需要从byte []创建图像。下面是这样做的。

InputStream in = new ByteArrayInputStream(obj); 
BufferedImage image = ImageIO.read(in); 
File outputfile = new File("image.png"); 
ImageIO.write(image, "png", outputfile); 

图像在创建项目的地方创建(本地驱动器)。

+10

另一种从JFreeChart创建图像的方法是使用'ChartUtilities.writeChartAsPNG(输出流,jfreechart,x,y)'函数。 – 2011-12-18 21:38:51

+1

yannis hristofakis:这样,你无法访问BufferedImage。我需要这个,因为图表添加了一些我通过配置图表无法摆脱的填充,所以我不得不裁剪图像 - BufferedImage.getSubImage(...) – Buffalo 2013-11-01 14:43:55

14

JfreeChart首先获取数据并使用通用ChartUtilities类或任何自定义实用程序类生成图像。

ChartUtilities.writeChartAsPNG(outputstream,getDataset(), width,height); 

也许这可以帮助你:here