java生成验证码

java生成验证码

照着哔站上的教学视屏写了一个java小项目。真的是一看就会,一学就废,刚开始的时候一句一个错。。。主要还是水平太低,遇到问题不会解决。
代码:

package imagecode;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;

public class ImageCode{
	
	//数组
	static String[] strs = {"a","b","c","d","e","f","g","h","i",
			"j","k","l","m","n","o","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 IOException{
		
		int w = 150;
		int h = 50;
		int imageType = java.awt.image.BufferedImage.TYPE_INT_RGB;  //值为1
		BufferedImage image = new BufferedImage(w,h,imageType); //创建一个图片(画板)
		
		Graphics g = image.getGraphics(); //生成画笔g
		g.setColor(Color.blue); //设置画笔的颜色
		g.fillRect(0, 0, w, h);//画一个实心的矩形,覆盖了画布
		
		//将验证码写在矩形里
		g.setColor(Color.pink); //画笔换一个颜色
		g.setFont(new Font("楷体",Font.PLAIN,25));//设置字体
		Random random = new Random(); 
		int x = 30; //定义第一个字符的位置
		int y = 30;
		//在数据中随机取4个字符
		for(int i = 0;i < 4; i++) {
			int num = random.nextInt(strs.length);  //在[0,length-1]之间取一个随机数
			String str = strs[num];
			g.drawString(str, x, y);
			x += 25;
		}
		
		//画干扰线,画5条
		g.setColor(Color.green);
		for(int i = 0;i < 5; i++) {
			int x1 = random.nextInt(30);
			int y1 = random.nextInt(50);
			
			int x2 = random.nextInt(30)+120;
			int y2 = random.nextInt(50);
			g.drawLine(x1,y1,x2,y2);
		}
		
		ImageIO.write(image,"jpg",new File("./output/aaa.jpg")); //把图片存下来
	}
}

下面我总结一下我遇到的问题和解决的方法(很多都不科学):
1、这个问题我都不好意思说,java每一个文件都有一个公共类,主函数就在这个类里。注意这个类的名字必须和文件名一致。。。
2、BufferedImage image = new BufferedImage(w,h,imageType);在使用第三方库的函数时要import调用第三方库。这个我真的很冤,我写了import的语句,但是他说我的无效。然后按照它提供的方法我导入了库,但是按它的方法生成的import语句和我的一模一样,连位置都一样。。。
3、在写路径的时候建议写成相对路径,这样代码的移植能力强。文件的根目录是你的workspace/projectname/,所以直接写成./output/aaa.jpg或者.\output\aaa.jpg都可以定位到output文件夹中的一张叫aaa的图片。这个output文件夹和src在同一个目录下。不要忘记前面的点哦。
4、在Java中除了RuntimeException及其任何子类,其他异常类都被Java的异常强制处理机制强制异常处理。关于那些被强制异常处理的代码块,必须进行异常处理,否则编译器会提示“Unhandled exception type Exception”错误警告。

Java中用于处理异常的方式
自行处理:可能引发异常的语句封入在try内,而处理异常的相应语句则封入catch块内
回避异常:在方法声明中包含throws子句,通知潜在调用者,如果发生了异常,必须由调用者处理。ImageIO.write(image,“jpg”,new File(“./output/aaa.jpg”));就必须进行异常处理,我选择throws,在主函数后面加一个throws IOException就好啦,毕竟try…catch不会写。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值