开发者学堂课程【Java Web 开发-Web 应用、Tomcat、HTTP 请求与响应:使用 Java 来画图】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/575/detail/7967
使用 Java 来画图
内容简介:
一、图片验证码
二、矩形图片的画图步骤
三、验证码的画图步骤
一、图片验证码
1.和图片相关的类:
Image、ImageIO、BufferedImage、Icon、ImageIcon
主要介绍图片缓冲区。我们要自己往图片上画东西。空白图片自己上去写东西。一般都写数字和字母。
2. 图形验证码
后期要一次性图形验证码。一次性图形验证码的目的是为了防止恶意注册和暴力破解。
注册的用户最终都是放到数据库中,可以写一段程序来访问数据库。一秒钟可以向数据库发送 N 多个数据请求。服务器就会瘫痪。
暴力破解指的是写出 N 多个代码挨个试,直到通过为止。如果掺杂英文字母,阿拉伯数字位数达到20位,暴力破解就很麻烦,变化很多。
早期出现用程序解析图片中的数字,加干扰线让程序识别不出来,歪歪扭扭,还有加减法,都是为了防止暴力破解。
二、矩形图片的画图步骤
代码如下:
BufferedImage bi=new Bufferedimage () ;
查找文档。
BufferedInage (int width, int height, int imageType)
height 表示他的高,imageType 表示他的类型。构造一个类型为预定义图像类型之一的 BufferedImage
1.完整的步骤如下:
//得到图片缓冲区
BufferedImage bi = new BufferedImage (
150
,
70
, BufferedImage. TYPE INT_RGB) ;
//得到它的绘制环境(得到这张图片的笔)
Graphics2D g2= (Graphics2D)
bi.getGraphics () ;
//绘制环境包含画笔。所有和绘制相关的任何东西都在里面。只有画笔,只能调粗细。
绘制环境可以调背景色,字体色,线条色,甚至可以扭曲字体。统一称为绘制环境。
2.填充一个矩形
g2.fil1Rect
(x,y,width,height)
g2.fil1Rect(0, 0,
150
,
70
);
//表示从左上角(0,0)开始,宽150,高70
填充整张图片(其实就是设置背景色)
g2.setColor(Color.WHITE)
//设置颜色;
g2.setFont(new Font("宋体",Font.BOLD,25));
//设置字体,一共三种格式,粗体,斜体,粗体加斜体。
g2.setColor(Color.BLACK)
;
//设置颜色
g2.drawstring("HelloWorld",3,
50
);
//向图片上写字符串
ImageIo.
w
rite(bi, "JPEG", new FileoutputStream("F:/a.jpg"));
//保存图片
如图所示:
3. 添加边框线
代码如下:
g2.setColor (Color. RED) ;
g2.drawRect (0, 0, 150-1, 70-1) ;
如图所示:
三、验证码的画图步骤
想要得到带栅格,干扰线,颜色不同的验证码,代码如下:
public class Demo2{
@Test
public void fun1 () throws FileNotFoundException,
VerifyCode
verifyCode=new VerifyCode () ;IOException
{
BufferedImage bi=verifyCode.getImage();
//随机的!
System.out.println(verifyCode.getText());
//打印图片上的文本内容
VerifyCode.output (bi,hew Fileoutputstream ("F:/b.jpg") ) ;
}
}
如图所示: