Automatisiertes Bild erzeugen lassen.

Status
Nicht offen für weitere Antworten.

Chris6783

Mitglied
Hi,

ich möchte Servlet schreiben, dass dem Bentuzer ein, in eine HTML Seite eingebettetes Bild präsentiert. Das Bild wird zur Laufzeit erzeugt und anschließend per <img ... ind den HTML Text eingebunden.

Bisher ist es mir gelungen, ein Buffered Image zu erzeugen, und darin auch zu malen. Allerdings wenn ich das Bild nun speichere, wird es im /bin Ordner abgelegt und kann daher nicht in der HTML Seite angezeigt werden.

Gibt es eine einfache Möglichkeit, das ganze elegant zu realisieren?

Danke im Vorraus!
Chris
 

Zed

Bekanntes Mitglied
Du hast also ein Problem mit dem Pfad.

1 Möglichkeit: absolute Pfadangabe

2 Möglichkeit: request.getContextPath()
 

Zed

Bekanntes Mitglied
Ist doch schonmal gut, es liefert dir den Pfad zur Webanwendung.

Häng noch den Ordner dran und den Namen wie das IMG heißen soll und schon hast du es an der richtigen Stelle

Code:
String pfadzumImg = request.getContextPath() + "img/bildname";
 

Chris6783

Mitglied
ja, dann steht in

pfadzumImg = "/Webapp1/img/bildanem.jpg";

und da fehlt ja dann immer noch die exakte Ornderangabe, sprich ("c:\..:")
 

Zed

Bekanntes Mitglied
Was spricht dagegen das Bild im Webverzeichnis zu speichern?

Aber ok dieser Aufruf gibt dir den Pfad zur Webanwendung mit c:\

Code:
super.getServletContext().getRealPath("/")

Geht aber nur im Servlet.
 

M.Schlierf

Mitglied
Warum schreibst du das Bild nicht gleich in den response?

z.B. so:
Code:
OutputStream os = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
        try{
            encoder.encode(outImage);
        }catch(IOException ex){
            System.out.println("error while encoding image: " + file + " ex:" + ex.getMessage());
        }
Dann musst du das Bild garnicht speichern sondern es wird direkt an den browser geschickt.

Wenn du dann noch das nen caching header mitschickst, dan cached der browser das bild und gut is ;-)

Ach so zum verständniss noch, der code sollte in einem Servlet sein und im image tag rufst du dann das Servlet auf

z.B. /ImageLoader/something.jpg

alles was hinterhalb des Servlet pfades steht bekommst du mit: String req = request.getPathInfo();
 

Chris6783

Mitglied
Hi Danke für die Hilfe! Aber ich möchte ja das Bild in eine Webseite einbette.. Sprich noch ein paar Tabellen und so (auch vom Servlert erzeugt) darum herum bauen.

Und wenn ich es auf deine Art mache, dann wird ja nur das Bild zurück gegeben.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben