12. Meme Generator

Java Meme Generator
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package edu.simpson.cis320.crud_app;

import javax.imageio.ImageIO;
import javax.servlet.ServletContext;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;

// Map the servlet to a URL
@WebServlet(name = "meme", value = "/meme")
public class MemeServlet extends HttpServlet {
    // Create logger for this class
    private final static Logger log = Logger.getLogger(MemeServlet.class.getName());

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // Log that we got here
        log.log(Level.INFO, "Meme servlet");

        // Grab the message as a parameter. Default if there's none.
        String message = request.getParameter("message");
        if (message == null) {
            message = "Simpson Storm";
        }

        // Get the servlet 'context', and from that, grab the image.
        // Image should be stored in the "resources" folder.
        ServletContext context = getServletContext();
        InputStream imageStream = context.getResourceAsStream("/WEB-INF/classes/simpson.jpg");
        BufferedImage img = ImageIO.read(imageStream);

        // Get the graphics context. Like a pen, for drawing.
        Graphics g = img.getGraphics();

        // Set the font for the graphics context.
        String fontName = "Century Schoolbook";
        int fontSize = 140;
        int fontStyle = Font.BOLD;
        Font font = new Font(fontName, fontStyle, fontSize);
        g.setFont(font);

        // Set the color for the graphics context
        g.setColor(new Color(0x6B0623));

        // Draw our text
        g.drawString(message, 100, 100);

        // Set the color for the graphics context
        g.setColor(new Color(0xEEB41E));

        // Draw our text, offset
        g.drawString(message, 105, 105);

        // Get rid of the pen, free up resources
        g.dispose();

        // This will be a jpeg image
        response.setContentType("image/jpg");

        // Grab the output stream
        OutputStream out = response.getOutputStream();

        // Write out image to the output stream
        ImageIO.write(img, "JPG", out);

    }

}