我尝试使用JCaptcha组件创建验证码,我需要在相关的servlet中编码图像。所以根据JCaptcha教程,我应该使用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;
}
答案 0 :(得分:3)
使用ImageIO:
// Image writer
ImageWriter 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函数