%@ page import="java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*" %>
<%@ page contentType="image/jpeg" import="java.util.*,java.io.*" %>
<% //
Billede med avatar
BufferedImage billede = new BufferedImage(250, 75, BufferedImage.TYPE_INT_RGB);
Graphics2D g = billede.createGraphics();
g.setRenderingHint( // sæt evt. tegnevink til trappeudjævning (antialias)
RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(new Color(180,180,180)); //grå baggrund
g.fillRect(0,0,250, 75);
// hent billedet fra harddisken - eller fra cache i application-objektet
Image jacob = (Image) application.getAttribute("jacobbillede");
if (jacob == null) {
String sti = application.getRealPath("/kode/kapitel_01/jacob.jpg");
InputStream is = new FileInputStream(sti);
jacob = JPEGCodec.createJPEGDecoder(is).decodeAsBufferedImage();
application.setAttribute("jacobbillede",jacob);
}
// tegn billedet nedskaleret
g.drawImage(jacob,210,-30,70,120,null);
// tegn hvid taleboks og forbind den med Jacobs mund (tegn udfyldt trekant)
g.setColor(Color.WHITE);
g.fillRoundRect(5, 5, 190, 65, 20, 20);
int[] xp={195,195,228}; int[] yp={30,60,45};
g.fillPolygon(xp, yp, 3);
// bestem netlæser ud fra HTTP-headeren "user-agent"
String info = request.getHeader("user-agent");
StringTokenizer st = new StringTokenizer(info, "(;)"); // opdel i bidder
String netl = st.nextToken().trim();
String styresyst = "?";
while (st.hasMoreTokens()) {
String s = st.nextToken().trim();
if (s.length()<=4) continue;
if (s.equals("compatible")) { netl = st.nextToken().trim(); continue; }
if (styresyst.length()<=1) styresyst = s;
}
if (netl.startsWith("MSIE")) netl = "Internet Explorer" + netl.substring(4);
if (styresyst.equalsIgnoreCase("Windows NT 4.0")) styresyst="Windows NT 4.0";
if (styresyst.equalsIgnoreCase("Windows NT 5.0")) styresyst="Windows 2000";
if (styresyst.equalsIgnoreCase("Windows NT 5.1")) styresyst="Windows XP";
g.setColor(Color.black);
g.drawString("Jeg holder øje med dig...", 10, 20);
g.drawString("Din adresse: " + request.getRemoteHost(), 10, 35);
g.drawString("Netlæser: " + netl, 10, 50);
g.drawString("Styresystem: " + styresyst, 10, 65);
// færdig med at tegne, frigiv grafik-objektet, konvertér til JPG og send
g.dispose();
JPEGCodec.createJPEGEncoder(response.getOutputStream()).encode(billede);
%>