package com.zou.utils;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.geom.Line2D;
import java.awt.image.BufferedImage;
import java.util.Random;
public class ImageUtils {
private static String code;
public static String getCode() {
return code;
}
public static BufferedImage createImage(int width, int height, int n) {
// 指定验证码的高度
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获得该图片的画笔
Graphics g = image.getGraphics();
// 设置填充色进行填充
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
// 设置画笔颜色,准备绘制
g.setColor(Color.BLACK);
// 从给定的字符中随机生成4个字符
char[] element = "123456789abcdefghijklmnopqrstuvwxyz".toCharArray();
String checkcode = "";
Random random = new Random();
for (int i = 0; i < n; i++) {
int randomIndex = Math.abs(random.nextInt()) % element.length;
checkcode = checkcode + element[randomIndex];
}
g.drawString(checkcode, 10, 16);
code=checkcode;
return image;
}
public static BufferedImage createMulImage(int width,int height,int n){
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics(); //获取Graphics类的对象
Graphics2D g2d = (Graphics2D) g;
Random random = new Random(); //实例化一个Random对象
Font mFont = new Font("黑体", Font.BOLD, 17); //通过Font构造字体
g.setColor(getRandColor(200, 250)); //设置颜色
g.fillRect(0, 0, width, height); //绘制验证码背景
g.setFont(mFont); //设置字体
g.setColor(getRandColor(180, 200)); //设置颜色
// 画随机的线条
for (int i = 0; i < 100; i++) {
int x = random.nextInt(width - 1); //生成起始点x轴的坐标
int y = random.nextInt(height - 1); //生成起始点y轴的坐标
int x1 = random.nextInt(6) + 1; //生成结束点x轴的坐标
int y1 = random.nextInt(12) + 1; //生成结束点y轴的坐标
BasicStroke bs = new BasicStroke(2f, BasicStroke.CAP_BUTT,
BasicStroke.JOIN_BEVEL);
Line2D line = new Line2D.Double(x, y, x + x1, y + y1);
g2d.setStroke(bs);
g2d.draw(line); //绘制直线
}
String sRand = "";
// 输出随机的验证文字
String ctmp = "";
int itmp = 0;
for (int i = 0; i < n; i++) {
if((random.nextInt(2)+1)==1){
itmp = random.nextInt(10) + 48; // 生成0~9的数字
ctmp = String.valueOf((char) itmp);
}else{
itmp = random.nextInt(26) + 65; // 生成A~Z的字母
ctmp = String.valueOf((char) itmp);
}
sRand += ctmp;
Color color = new Color(20 + random.nextInt(110), 20 + random
.nextInt(110), 20 + random.nextInt(110));
g.setColor(color); //设置文字颜色
/** **随机缩放文字并将文字旋转指定角度* */
// 将文字旋转指定角度
Graphics2D g2d_word = (Graphics2D) g;
AffineTransform trans = new AffineTransform();
trans.rotate(random.nextInt(45) * 3.14 / 180, 15 * i + 8, 7);
// 缩放文字
float scaleSize = random.nextFloat() +0.8f;
if (scaleSize > 1f) scaleSize = 1f;
trans.scale(scaleSize, scaleSize);
g2d_word.setTransform(trans);
/** ********************* */
g.drawString(ctmp, 15 * i + 18, 14);
}
code=sRand;
return image;
}
// 获取随机颜色
public static Color getRandColor(int s, int e) {
Random random = new Random();
if (s > 255) s = 255;
if (e > 255) e = 255;
int r = s + random.nextInt(e - s); //随机生成RGB颜色中的r值
int g = s + random.nextInt(e - s); //随机生成RGB颜色中的g值
int b = s + random.nextInt(e - s); //随机生成RGB颜色中的b值
return new Color(r, g, b);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源介绍】 基于javaweb的鞋子销售网站源码+sql数据库(本科课设).zip 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 欢迎下载交流,互相学习,共同进步! 基于javaweb的鞋子销售网站源码+sql数据库(本科课设).zip基于javaweb的鞋子销售网站源码+sql数据库(本科课设).zip基于javaweb的鞋子销售网站源码+sql数据库(本科课设).zip基于javaweb的鞋子销售网站源码+sql数据库(本科课设).zip基于javaweb的鞋子销售网站源码+sql数据库(本科课设).zip
资源推荐
资源详情
资源评论



























收起资源包目录





















































































共 59 条
- 1
资源评论


onnx
- 粉丝: 1w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于信息技术发展浅析计算机网络工程建设策略(1).docx
- 太阳能电池数据采集本科毕业论文设计说明书(1).doc
- 网络工程数据库系统应用基础(1).ppt
- 人工智能应用普及(1).pptx
- 校园SNS网站的商业计划书(1).doc
- 软件开发人员的辞职申请书(1).docx
- 数控车床螺纹切削循环指令编程2讲课文档(1).ppt
- 交通灯PLC控制系统设计(1)(1).doc
- 大数据时代下的云会计与企业成本控制【会计实务经验之谈】(1).doc
- 会计实务:会计信息化环境下强化内控手段(1).doc
- 【推荐下载】专家认为:自动化技术创新是工业发展的关键(1).pdf
- 大数据下有限理性决策理论的利弊分析(1).docx
- 软件调研报告(1).doc
- 基于STM32F103的J1939多包传输底层软件设计(1).docx
- 互联网+背景下碎片化学习策略研究(1).docx
- 旅游网站营销策略(1).doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
