Hello,
I have a jsp (will eventually move it to a servlet) that generates a
dynamic image
I have been following an article
http://today.java.net/pub/a/today/2004/04/22/images.html (Dynamic Text
section.)

so my simple test looks like:
<table width=100  border=1>
<tr><td><img src="/jsp/test/imageFont.jsp"> </td></tr>
</table>
The problem is i can not figure how how to make the image with a
transparent back ground.
Below is the code in imageFont.jsp
Thanks for any help
/*------------------------------SNIP----------------------------------*/
<%@ page import="java.io.File,
                 java.awt.*,
                 java.awt.image.BufferedImage,
                 java.awt.geom.AffineTransform,
                 javax.swing.*,
                 java.io.FileInputStream,
                 java.awt.font.FontRenderContext,
                 java.awt.geom.Rectangle2D,
                 javax.imageio.ImageIO,
                 java.io.OutputStream
 "%>
<%
    // configure all of the parameters
    String text = "ABC abc XYZ xyz";
    if(request.getParameter("text") != null) {
        text = request.getParameter("text");
    }
    String font_file = "babyk.ttf";
    if(request.getParameter("font-file") != null) {
        font_file = request.getParameter("font-file");
    }
    font_file = request.getRealPath(font_file);
    float size = 20.0f;
    if(request.getParameter("size") != null) {
        size = Float.parseFloat(request.getParameter("size"));
    }

    Color background = Color.white;
    if(request.getParameter("background") != null) {
        background = new Color(Integer.parseInt(
                request.getParameter("background"),16));
    }
    Color color = Color.black;
    if(request.getParameter("color") != null) {
        color = new Color(Integer.parseInt(
                request.getParameter("color"),16));
    }

    Font font = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream
(font_file));
    font = font.deriveFont(size);

    BufferedImage buffer = new BufferedImage
(1,1,BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2 = buffer.createGraphics();
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
    FontRenderContext fc = g2.getFontRenderContext();
    Rectangle2D bounds = font.getStringBounds(text,fc);

    // calculate the size of the text
    int width = (int) bounds.getWidth();
    int height = (int) bounds.getHeight();

    // prepare some output
    buffer = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    g2 = buffer.createGraphics();
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
    g2.setFont(font);

    // actually do the drawing
    g2.setColor(background);
    g2.fillRect(0,0,width,height);
    g2.setColor(color);
    g2.drawString(text,0,(int)-bounds.getY());

    // set the content type and get the output stream
    response.setContentType("image/png");
    OutputStream os = response.getOutputStream();

    // output the image as png
    ImageIO.write(buffer, "png", os);
    os.close();


%>

___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".

Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html

Reply via email to