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

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

[java] view plaincopy在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 plaincopy在CODE上查看代码片派生到我的代码片
 
  1. import javax.imageio.ImageIO;  



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

[java] view plaincopy在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