注册时,随机图片的生成,和换一张图片

 

package com.itcast.servlet;

 

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.util.Random;

 

import javax.imageio.ImageIO;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

public class ValidatePhotoServlet extends HttpServlet {

private final int WIDTH = 100;

private final int HEIGHT = 30;

 

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

BufferedImage image = new BufferedImage(WIDTH, HEIGHT,

BufferedImage.TYPE_INT_RGB);// 获得一个图片对象

Graphics g = image.getGraphics();

// 设置背景色

setBackground(g);

// 设置边框

setBorder(g);

// 画干扰线

drawLine(g);

// 写随机数

drawrandom((Graphics2D) g);

// 画图

response.setContentType("image/jpeg");

ImageIO.write(image, "jpeg", response.getOutputStream());

response.setDateHeader("Expries", -1);// 设置没有缓存

response.setHeader("Cache_Control", "no_cache");

 

}

 

private void drawrandom(Graphics2D g) {

g.setColor(Color.RED);

g.setFont(new Font("宋体", Font.BOLD, 20));// 设置字体的格式

String base = "\u7684\u4e00\u4e80";// unicode码,用来生成汉字

int x = 5;

for (int i = 0; i < 5; i++) {

int degree = new Random().nextInt() % 30;// 这个是生成-30-30

String ch = (base.charAt(new Random().nextInt(base.length() - 1)) + "");// 随机获得汉字

g.rotate(degree * Math.PI / 180, x, 20);// degree * Math.PI /

// 180旋转的弧度 绕着这个点旋转 x, 20

g.drawString(ch, x, 20);// 把字写进去,Y不变,x每次加20

g.rotate(-degree * Math.PI / 180, x, 20);// 旋转回来,为下一个汉字旋转做准备

x = x + 20;

 

}

}

 

private void drawLine(Graphics g) {

g.setColor(Color.GREEN);

for (int i = 0; i < 5; i++) {

int x1 = new Random().nextInt(WIDTH);

int x2 = new Random().nextInt(WIDTH);

int y1 = new Random().nextInt(HEIGHT);

int y2 = new Random().nextInt(HEIGHT);

g.drawLine(x1, y1, x2, y2);

 

}

}

 

private void setBorder(Graphics g) {

g.setColor(Color.BLUE);

g.drawRect(1, 1, WIDTH - 2, HEIGHT - 2);

}

 

private void setBackground(Graphics g) {

g.setColor(Color.WHITE);// 设置画笔的颜色

g.drawRect(0, 0, WIDTH, HEIGHT);// 设置用画笔划出的矩形

 

}

 

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

 

}

实现图片换一张的关键script代码

<input type="text" /><img src="/day_confirm/servlet/ValidatePhotoServlet" alt="换一张" onclick="changeimage(this)"/>

<script type="text/javascript">
function changeimage(img){
img.src=img.src+"?"+new Date().getTime();

}
</script>

你可能感兴趣的:(java,注册,随机图片)