소스 검색

解决jdk1.7会出现的com.sun.image.codec.jpeg不存在

KeYuan 8 년 전
부모
커밋
e0681eb769
1개의 변경된 파일12개의 추가작업 그리고 5개의 파일을 삭제
  1. 12 5
      src/main/java/com/key/common/base/action/JcaptchaAction.java

+ 12 - 5
src/main/java/com/key/common/base/action/JcaptchaAction.java

@@ -3,6 +3,7 @@ package com.key.common.base.action;
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayOutputStream;
 
+import javax.imageio.ImageIO;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -14,8 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import com.key.common.utils.web.Struts2Utils;
 import com.octo.captcha.service.image.ImageCaptchaService;
 import com.opensymphony.xwork2.ActionSupport;
-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
+//import com.sun.image.codec.jpeg.JPEGCodec;
+//import com.sun.image.codec.jpeg.JPEGImageEncoder;
 
 @Namespaces({ @Namespace("/") })
 public class JcaptchaAction extends ActionSupport {
@@ -26,6 +27,7 @@ public class JcaptchaAction extends ActionSupport {
 	public String execute() throws Exception {
 		HttpServletRequest request = Struts2Utils.getRequest();
 		HttpServletResponse response = Struts2Utils.getResponse();
+        ByteArrayOutputStream out = null;
         byte[] captchaChallengeAsJpeg = null;  
         // the output stream to render the captcha image as jpeg into  
         ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();  
@@ -36,9 +38,14 @@ public class JcaptchaAction extends ActionSupport {
             String captchaId = request.getSession().getId();  
             // call the ImageCaptchaService getChallenge method  
             BufferedImage challenge = imageCaptchaService.getImageChallengeForID(captchaId, request.getLocale());
-            // a jpeg encoder  
-            JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(jpegOutputStream);  
-            jpegEncoder.encode(challenge);
+            // a jpeg encoder
+/*** jdk1.7之后默认不支持了 **/
+//            JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(jpegOutputStream);
+//            jpegEncoder.encode(challenge);
+
+//            换成新版图片api
+            ImageIO.write(challenge, "jpg", jpegOutputStream);
+
         } catch (Exception e) {  
             // TODO Auto-generated catch block  
             e.printStackTrace();