Bild speichern und auf JSP zeigen

Diskutiere Bild speichern und auf JSP zeigen im Web Tier Forum; Mal ein Beispiel. Nicht besonders schön und ein HTML-Validator wird vermutlich schreiend davonlaufen, für den Zweck sollte es jedoch genügen....

  1. mihe7
    mihe7 Bekanntes Mitglied
    Mal ein Beispiel. Nicht besonders schön und ein HTML-Validator wird vermutlich schreiend davonlaufen, für den Zweck sollte es jedoch genügen.

    Erst mal ein simples Servlet. Dieses liefert zur Veranschaulichung einfach ein "zufälliges" Bild, damit man sieht, das was passiert.
    Code (Java):

    @WebServlet("/image")
    public class RandomImage extends HttpServlet {

        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            byte[] data = getImage();
            resp.setContentType("image/jpeg");
            resp.setContentLength(data.length);
            try(OutputStream out = resp.getOutputStream()) {
                out.write(data);
            }
        }

        private byte[] getImage() throws IOException {
            BufferedImage img = new BufferedImage(400, 400, BufferedImage.TYPE_INT_RGB);
            Graphics2D g2 = img.createGraphics();
            g2.setColor(Color.WHITE);
            g2.fillRect(0, 0, 400, 400);
            g2.setColor(Color.RED);
            g2.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 16));
            g2.drawString(Long.toString(System.currentTimeMillis()), 10, 100);
            g2.dispose();
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            ImageIO.write(img, "jpeg", os);
            return os.toByteArray();
        }
    }
     
    Dann das JSP-File (hier eigentlich nur HTML):
    Code (HTML5):

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title>JSP Test</title>
    </head>
    <body>
      <button id="refresh" type="button">Refresh</button>
      <img id="image" src="image" />
      <script>
        document.getElementById("refresh").addEventListener("click", function(e) {
          document.getElementById("image").src = 'image?' + new Date().getTime();
        });
      </script>
    </body>
    </html>
     
    Das Script am Ende ist selbsterklärend: es fügt einen click-Listener zum Button hinzu, der das src-Attribut des Bildes anpasst. Der Query-Teil der URI ist dazu da, dass der Browser-Cache umgangen wird. Letzteres ist nicht immer in der Form erwünscht, in diesem Beispiel aber schon :)
     
  2. Dimax
    Dimax Mitglied
    Ausprobiert..
     

    Anhänge:

  3. mihe7
    mihe7 Bekanntes Mitglied
    Ich weiß nicht, was Du da ausprobiert hast, mein Beispiel auf jeden Fall nicht.

    Der Fehlermeldung und dem beschränkten Screenshot nach zu urteilen, gibt es kein Element mit der ID, die in der als fehlerhaft markierten Zeile in document.getElementById angegeben ist. Man sieht das auf dem Screenshot nicht.
     
  4. Dimax
    Dimax Mitglied
    TestChart.java geändert
    Code (Java):

    package Auswertung;
    @WebServlet("/TestChart")
    public class TestChart extends HttpServlet{

        private static final long serialVersionUID = 1L;
    @Override
     protected void doGet(HttpServletRequest anfrage, HttpServletResponse antwort) throws ServletException,        IOException {
        System.out.println("Get gekommen");
            String top[][]=daten.einlesen.ProgrammAnalyse.topTenKomplex();
            String header=new String("Top Komplexität");
            String titel=new String("Top Komplex");
            byte [] ding=statistikDarstellung(top,titel,header);
            antwort.setContentType("image/png");
            antwort.setContentLength(ding.length);
            try(OutputStream outs=antwort.getOutputStream()){
                outs.write(ding)
              }catch(Exception e){e.printStackTrace();}
       }
    public static byte[] statistikDarstellung( String dataArray[][],String titel,String header) throws IOException {
            DefaultPieDataset data=new DefaultPieDataset();      
            for(int i=0;i<dataArray.length;i++){
                data.setValue(dataArray[i][0],Double.parseDouble(dataArray[i][1]));
            }  
            JFreeChart chart= ChartFactory.createPieChart(titel,data,true,true, false);
            chart.setBorderPaint(Color.GREEN);
            chart.setBorderStroke(new BasicStroke(5.0f));
            chart.setBorderVisible(true);    
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            ChartUtilities.writeChartAsPNG(os,chart , 600, 500);
            System.out.println("chart gesendet");
            return os.toByteArray();
       
            }
    }
     
    Statistik.jsp liegt im package Auswertung

    Code (Text):

    .....
    out.print("<tr><td colspan=\"3\">"+
    "<button id=\"topKomplex\" type=\"button\">Top Komplexität Diagramm</button>"+
    //und weitere buttons

    %>
        <script>
        document.getElementById("topKomplex").addEventListener("click", function(e) {
          document.getElementById("image").src ='TestChart?' + new Date().getTime();
        });
      </script>
        <%  //...und weitere Sachen..
     
    Button ist da ,beim draufdrücken passiert nicht
     
  5. mihe7
    mihe7 Bekanntes Mitglied
    Was sagen die Entwicklertools? Script OK? Netzwerk? Error 404?
     
  6. mrBrown
    mrBrown Super-Moderator Mitarbeiter
    Und wo ist der img-Tag?
     
  7. Dimax
    Dimax Mitglied
    404
     
  8. Dimax
    Dimax Mitglied
    vergessen
    Code (Text):

    <iframe   width="40%" height="600"  style="border:3px solid green;" >
    <img id="image" src="TestChart" />
    </iframe>
     
     
  9. mrBrown
    mrBrown Super-Moderator Mitarbeiter
    Lass doch endlich mal dieses überflüssige iframe weg...
     
  10. Dimax
    Dimax Mitglied
    gemacht..Ändert aber nichts..Meine einzige Frage ist : wie bekommt man ein Foto aus dem
    response.getOutPutStream ()..
     
  11. Wenn du Java lernen möchtest, empfehlen wir dir diese Online-Training hier
Die Seite wird geladen...

Bild speichern und auf JSP zeigen - Ähnliche Themen

Projekt als .jar Datei speichern - Bilder werden nicht mehr angezeigt
Projekt als .jar Datei speichern - Bilder werden nicht mehr angezeigt im Forum Java Basics - Anfänger-Themen
InputStream parsen und als Bilddatei abspeichern
InputStream parsen und als Bilddatei abspeichern im Forum Java Basics - Anfänger-Themen
Gemaltes Bild über saveDialog speichern unter
Gemaltes Bild über saveDialog speichern unter im Forum AWT, Swing, JavaFX & SWT
Bilder als "Array" abspeichern.
Bilder als "Array" abspeichern. im Forum AWT, Swing, JavaFX & SWT
Bilder in der DB speichern?
Bilder in der DB speichern? im Forum Datenbankprogrammierung
Thema: Bild speichern und auf JSP zeigen