我正在为我的java应用程序使用simpleCatcha插件。生成的验证码图像是不可读的,所以我想更改图像样式。是否有任何方法可以自定义或更改图像的样式。HTML是:
<img id="captcha" src="<c:url value="simpleCaptcha.jpg" />" width="150">web.xml是:
<display-name>captcha</display-name>
<servlet>
<servlet-name>SimpleCaptcha</servlet-name>
<servlet-class>nl.captcha.servlet.SimpleCaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SimpleCaptcha</servlet-name>
<url-pattern>/simpleCaptcha.jpg</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>simpleCaptcha.jsp</welcome-file>
</welcome-file-list>页面导入为:
<%@ page import="nl.captcha.Captcha"%>我还使用了验证码的this插件
发布于 2013-05-30 13:24:29
如果检查一下nl.captcha.servlet.SimpleCaptchaServlet、width、height和FontColors的源代码,就会发现它们都是预定义的。这可以在simplecaptcha-1.1.1.jar中找到。下面的截图供您参考。

关于边缘单词渲染器,这是在ColoredEdgesWordRenderer类中处理的&其他类对xBaseline、yBaseline、shape等进行一些计算,并得出验证码的单词应该显示的角度。
我敢打赌,要实现你想要的东西,你要么需要编辑源代码,制作自己的jar,然后重新部署。这是因为参数不是从web.xml文件中获取的。或者寻找一些你认为更容易识别文本的其他captcha代码。但是,建议是,验证码看起来越复杂,它就会增加越多的安全性。

发布于 2013-07-20 04:13:02
您可以使用自己的servlet覆盖SimpleCaptchaServlet并使用它。然后,您应该能够删除和更改背景或噪声或边界
示例:
.addBackground(new FlatColorBackgroundProducer(Color.LIGHT_GRAY)) 或
GradiatedBackgroundProducer bg = new GradiatedBackgroundProducer();
bg.setFromColor(Color.white);
bg.setToColor(Color.yellow);
.addBackground(bg)发布于 2016-12-22 18:15:33
如果有人还在寻找解决方案,可以像下面这样扩展SimpleCaptchaServlet,并在web.xml中映射这个新的servlet。这对我很管用
public class MySimpleCaptcha extends SimpleCaptchaServlet {
private static final String PARAM_HEIGHT = "height";
private static final String PARAM_WIDTH = "width";
protected int _width = 200;
protected int _height = 50;
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Captcha captcha = new Captcha.Builder(_width, _height)
.addText()
.addBackground(new GradiatedBackgroundProducer())
// Add here whatever you need
.addNoise()
.gimp(new DropShadowGimpyRenderer())
.addBorder()
.build();
CaptchaServletUtil.writeImage(resp, captcha.getImage());
req.getSession().setAttribute(NAME, captcha);
}
}https://stackoverflow.com/questions/16827695
复制相似问题