2011-07-04 80 views
1

我有一個場景,我需要顯示錶(使用JTable生成)將其轉換爲PNG圖像,然後使用servlet顯示它們。使用servlets顯示圖像

以下是在servlet代碼顯示錶:

{ 
     table = u.generateTableChart("datamonth");  
     saveToServlet(table, table.getTableHeader(), p_resp); 
} 

void saveToServlet(JTable table, JTableHeader header, 
      HttpServletResponse p_resp) 
    { 

     int w = Math.max(table.getWidth(), header.getWidth()); 
     int h = table.getHeight() + header.getHeight(); 
     OutputStream out = null; 
     BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); 
     Graphics2D g2 = bi.createGraphics(); 
     header.paint(g2); 
     g2.translate(0, header.getHeight()); 
     table.paint(g2); 
     g2.dispose(); 
     try { 
      p_resp.setContentType("image/png"); 
      out = p_resp.getOutputStream(); 
      ImageIO.write(bi, "png", out); 

     } catch (IOException ioe) { 
      System.out.println("write: " + ioe.getMessage()); 
     } 
    } 

這似乎是引發此錯誤,當我嘗試查看網頁 的圖像,因爲它有無法顯示錯誤太多了。

我能夠將文件存儲在臨時位置,並且能夠看到圖形。

ServletOutputStream out = null; 

    try { 
     out = p_resp.getOutputStream(); 
     p_resp.setContentType("image/png"); 
     chart=u.genarateLineChart(m_martiniInstance); 
     ChartUtilities.writeChartAsJPEG(out, chart, 625, 500); 
    } 

,仍然沒有運氣

由於提前, 巴維亞

+0

在哪個平臺(Windows,Linux)是您的服務器? – SJuan76

+0

@SJuan tomcat服務器在RHEL上 – bhavs

+0

@Bhavya:你確定圖像是RGB格式嗎?如果您生成的圖像不適用於屏幕消耗,則通常會出現此錯誤。 –

回答

3

我認爲問題是要設置內容類型爲"image/png"

對於圖表使用我用這JFreeCharts產生但是用jpeg寫作writeChartAsJPEG 使用

ChartUtilities.writeChartAsPNG(...) 
+0

@Prashanth我改變了代碼並檢查了這一點。這似乎並沒有幫助要麼 – bhavs

+1

正常響應緩存從瀏覽器使用CTRL + F5完全重新加載,或刪除瀏覽器緩存,並嘗試重新加載圖像 –

+0

我能夠查看折線使用提供的代碼,但不是Jtable,任何答案? – bhavs