struts2验证码生成时的一个小问题

前几天在网上copy了一段代码,关于struts2生成验证码,原本拷贝下来的myeclipes报错,原因是下面这三个类访问权限问题:

import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

但是实际使用过程中是不会出错的,也可以通过设置将error改成warning,但是害怕老师那边过不去,所以去除了这三个类,改成下面的:

import javax.imageio.ImageIO;


其实原理很简单,原本com.sun.image.codec.jpeg这里面的类是将BufferedImage转换成ByteArrayInputStream,只是换了一种实现方法,源代码如下:


/**
	 * 将BufferedImage转换成ByteArrayInputStream
	 * 
	 * @param image
	 *            图片
	 * @return ByteArrayInputStream 流
	 * 
	 */
	private static ByteArrayInputStream convertImageToStream(BufferedImage image)
			throws IOException {

		ByteArrayInputStream inputStream = null;
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		ImageIO.write(image, "gif", bos);
		/*
		ImageIO.write(BufferedImage image,String format,OutputStream out);
			参数image表示获得的BufferedImage;
			参数format表示图片的格式,比如“gif”等;
			参数out表示输出流,如果要转成Byte数组,则输出流为ByteArrayOutputStream即可;
			执行完后,只需要toByteArray()就能得到byte[];
		*/
		byte[] bts = bos.toByteArray();
		inputStream = new ByteArrayInputStream(bts);
		return inputStream;
	}



这样就不会出现包访问权限的错误了,网站测试也正常。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值