import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
public class CommonUtil {
/**
* does MD5 encryption for password
* @param text
* @return
*/
public static String getMD5(String text) {
try {
java.security.MessageDigest md = java.security.MessageDigest
.getInstance("MD5");
byte[] array = md.digest(text.getBytes());
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length; ++i) {
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100)
.substring(1, 3));
}
return sb.toString();
} catch (java.security.NoSuchAlgorithmException e) {
}
return null;
}
/**
* Creates random Captcha as per given filepath and image format
* @param filePath
* @param ext
* @throws IOException
*/
public void writeCaptcha(String filePath,String ext) throws IOException {
int width = 150;
int height = 50;
Random r = new Random();
String var = "";
for (int i = 0; i < 6; i++) {
char ran = (char) Math.abs(65 + Math.abs(r.nextInt() % 25));
var += ran;
}
BufferedImage bufferedImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = bufferedImage.createGraphics();
Font font = new Font("Georgia", Font.BOLD, 18);
g2d.setFont(font);
RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
rh.put(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHints(rh);
GradientPaint gp = new GradientPaint(0, 0, Color.red, 0, height / 2,
Color.black, true);
g2d.setPaint(gp);
g2d.fillRect(0, 0, width, height);
g2d.setColor(new Color(255, 153, 0));
int x = 0;
int y = 0;
for (int i = 0; i < var.length(); i++) {
x += 10 + (Math.abs(r.nextInt()) % 15);
y = 20 + Math.abs(r.nextInt()) % 20;
g2d.drawChars(var.toCharArray(), i, 1, x, y);
}
g2d.dispose();
File file = new File(filePath);
ImageIO.write(bufferedImage, ext, file);
}
}
No comments:
Post a Comment