偷懒了,直接贴代码了
package cn.tx.demo1;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.nio.Buffer;
import java.util.Random;
public class ImageCode {
//数组
static String[] strs = {
"a", "b", "c", "d", "e", "f", "g", "h",
"i", "j", "k", "m", "n", "p", "q", "r",
"s", "t", "u", "v", "w", "x", "y", "z",
"2", "3", "4", "5", "6", "7", "8", "9"};
public static void main(String[] args) throws Exception {
//生成图片 图片上有随机字母+数字+干扰线
//1.画板= 纸
//2.笔
//3.数据<--随机四个+字母+数字
//4.通过笔画出数据到画板上
//5.生成真正图片
//定义图片的宽度
int w = 150;
//定义图片高度
int h =50;
//图片类型
//int imageType = BufferedImage.TYPE_3BYTE_BGR; 常量写法
//int imageType = 1; 源码就是“1”
//1.画板= 纸 JDK中提供的画板类 ctrl+p 快捷查看方法参数
BufferedImage image = new BufferedImage(w,h,1);
//大需求: 把图片颜色修改 图片默认为黑色
//2.笔获取画笔的对象
Graphics g = image.getGraphics();
//给画笔设置颜色
g.setColor(Color.yellow);
//画填充矩形
g.fillRect(0,0,w,h);
//3.数据<--随机四个+字母+数字
//for循环 循环四次 回车
//重新设置颜色
g.setColor(Color.red);
//设置字体
g.setFont(new Font("楷体",Font.PLAIN,25));
Random random = new Random();
int x =30;
int y =30;
for (int i = 0; i <4 ; i++) {
//每循环一次取一个
//num的值生成随机数 Math or Random
int num =random.nextInt(strs.length);
String str = strs[num];
//每获取一个字符串 画上去
g.drawString(str,x,y);
//每画一次,把x的值变大
x+=25;
}
g.setColor(Color.green);
//4.画干扰线
for (int i = 0; i < 10; i++) {
int x1 = random.nextInt(30);
int y1 =random.nextInt(50);
int x2 =random.nextInt(30)+120; //加120 脱远
int y2 = random.nextInt(50);
g.drawLine(x1,y1,x2,y2);
}
//5.生成图片 把image生成到本地磁盘上
ImageIO.write(image,"jpg",new File("D:\\dm\\dome\\yzm.jpg"));
}
}