【问题标题】:JPEGImageEncoder don't work in JDK 7JPEGImageEncoder 在 JDK 7 中不起作用
【发布时间】:2015-02-18 09:10:17
【问题描述】:

我尝试使用 JCaptcha 组件制作验证码,我需要在相关 servlet 中对图像进行编码。所以根据JCaptcha Tutorial,我应该使用JPEGImageEncoder,它与JDK7不兼容。 我还能做什么?
这是代码的相关部分:

     ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
     BufferedImage challenge =
             CaptchaServiceSingleton.getInstance().getImageChallengeForID(captchaId,
                     httpServletRequest.getLocale());
   JPEGImageEncoder jpegEncoder =
                 JPEGCodec.createJPEGEncoder(jpegOutputStream);
         jpegEncoder.encode(challenge);
     } catch (IllegalArgumentException e) {
         httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
         return;
     } catch (CaptchaServiceException e) {
         httpServletResponse.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
         return;
     }

【问题讨论】:

    标签: java jcaptcha


    【解决方案1】:

    使用ImageIO:

    ImageWriter imageWriter = 
        ImageIO.getImageWritersBySuffix("jpeg").next();
    ImageOutputStream ios = 
        ImageIO.createImageOutputStream(jpegOutputStream);
    imageWriter.setOutput(ios);
    IIOMetadata imageMetaData = imageWriter.getDefaultImageMetadata(
        new ImageTypeSpecifier(challenge), null);
    imageWriter.write(
        imageMetaData, new IIOImage(challenge, null, null), null);
    

    这取代了内部和已弃用的 JPEG 函数。

    【讨论】:

      猜你喜欢
      • 2017-10-29
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 2014-08-19
      • 2015-02-25
      • 1970-01-01
      • 2013-10-19
      相关资源
      最近更新 更多