Cache und Bild rendern

Floffy

Mitglied
Hallo Leute,

Ich möchte eine JSP Seite erstellen, die als Parameter einen Pfad zu einem Bild und die Angabe, ob ein evtl. bereits schon gecachtes Bild verwendet werden.

Falls das gecachte Bild verwenden kann soll es angezeigt werdeb, falls nicht soll das Bild mit dem übergebenen Pfad geladen, auf eine max. Seitenlänge von 600px skaliert, das Datum+Uhrzeit rechts unten in das Bild geschrieben, in den Cache gespeichert und angezeigt werden.

Mein Problem ist, dass ich nicht weis wie ich die Zeit/Datum in ein Bild schreiben kann? Außerdem hab ich keine Ahnung wie das mit dem Cache funkioniert.

Falls mir jemand helfen kann wär ich euch sehr dankbar ;)

Grüße Flo
 
Hi Floffy :)

Mit der Klasse ImageIO kannst Du eine Bilddatei in ein BufferedImage laden. Dieses Bufferedimage bietet dann die Methode getGraphics, womit Du an den Grafikkontext des Bildes kommst und über dessen Methoden wie drawString() "auf" das Bild zeichnen kannst.
 
ImageIO hat nicht nur read-, sondern auch write-Methoden. ;-)

Bin gerade noch über diesen Thread gestolpert - vielleicht sind da auch noch einige nützliche Code-Snippets für Dich dabei.
 
Zuletzt bearbeitet:
Ich schreib mein Image bereits in den reponse OutputStream, es wird auch angezeigt aber meine Frage war wie ich es cachen kann.

Hier zur Info mal der Code:
Code:
<%
            //Nur Ausführen falls Pfad in URL mitgegeben wird
            if (request.getParameter("image") != null) {
                //Pfad absolut setzen
                ServletContext sc = getServletConfig().getServletContext();
                String inputFilename = sc.getRealPath("\\") + request.getParameter("image");
                int height;
                int width;

                //Bild einlesen
                File inputFile = new File(inputFilename);
                Image image = new ImageIcon(inputFilename.toString()).getImage();

                height = image.getHeight(null);
                width = image.getWidth(null);

                //BufferedImage erstellen
                BufferedImage bufimg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);


                Graphics2D g = bufimg.createGraphics();

                //Eingelesenes Bild und Datum/Zeit auf BufferedImage schreiben
                g.drawImage(image, 0, 0, null);
                SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm");
                GregorianCalendar cal = new GregorianCalendar();
                Date date = new Date();
                cal.setTime(date);
                String dateStr = sdf.format(date);

                g.drawString(dateStr, width - 100, height - 10);

                //MIME Typ auf image/jpeg setzen
                response.setContentType("image/jpeg");
                //Gerendertes JPEG auf OurputStrem schreiben
                JPEGImageEncoder enc = JPEGCodec.createJPEGEncoder(response.getOutputStream());
                enc.encode(bufimg);

            }
        %>
 
Erklär eben mal, was "cachen" in Deinem Fall heißen soll: serverseitig, um das Bild nicht neu generieren zu müssen (siehe write-Methoden), oder clientseitig durch den Browser (auf den Du wohl keinen Einfluss haben wirst)?
 

Neue Beiträge

Zurück