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

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

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. import com.sun.image.codec.jpeg.ImageFormatException;  
  2. import com.sun.image.codec.jpeg.JPEGCodec;  
  3. import com.sun.image.codec.jpeg.JPEGImageEncoder;  


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

 

 

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. import javax.imageio.ImageIO;  



 

 

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

 

 

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. /** 
  2.      * 将BufferedImage转换成ByteArrayInputStream 
  3.      *  
  4.      * @param image 
  5.      *            图片 
  6.      * @return ByteArrayInputStream 流 
  7.      *  
  8.      */  
  9.     private static ByteArrayInputStream convertImageToStream(BufferedImage image)  
  10.             throws IOException {  
  11.   
  12.         ByteArrayInputStream inputStream = null;  
  13.         ByteArrayOutputStream bos = new ByteArrayOutputStream();  
  14.         ImageIO.write(image, "gif", bos);  
  15.         /* 
  16.         ImageIO.write(BufferedImage image,String format,OutputStream out); 
  17.             参数image表示获得的BufferedImage; 
  18.             参数format表示图片的格式,比如“gif”等; 
  19.             参数out表示输出流,如果要转成Byte数组,则输出流为ByteArrayOutputStream即可; 
  20.             执行完后,只需要toByteArray()就能得到byte[]; 
  21.         */  
  22.         byte[] bts = bos.toByteArray();  
  23.         inputStream = new ByteArrayInputStream(bts);  
  24.         return inputStream;  
  25.     }  

 

 

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

转载于:https://www.cnblogs.com/chbjaycn/p/3650353.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值