【问题标题】:Change image style in simpleCaptcha在 simpleCaptcha 中更改图像样式
【发布时间】:2013-05-25 12:40:52
【问题描述】:

我正在为我的 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 插件进行验证码

【问题讨论】:

    标签: java html css servlets captcha


    【解决方案1】:

    如果您查看nl.captcha.servlet.SimpleCaptchaServletwidthheightFontColors 的源代码,它们已被预定义。这可以在 simplecaptcha-1.1.1.jar 中找到。下面的屏幕截图供您参考。

    关于边缘词渲染器,这是在 ColoredEdgesWordRenderer 类和其他类中处理的.

    我敢打赌,要实现您想要的,您要么需要编辑源代码并制作自己的 jar 并重新部署。这是因为参数不是从web.xml 文件中获取的。 或者寻找其他一些您认为更容易识别文本的验证码。但是,建议是,您的验证码看起来越复杂,它会增加越多的安全性。

    【讨论】:

      【解决方案2】:

      您可以使用自己的 servlet 覆盖 SimpleCaptchaServlet 并改用它。然后您应该能够移除和更改背景或噪音或边框

      例子:

      .addBackground(new FlatColorBackgroundProducer(Color.LIGHT_GRAY)) 
      

      GradiatedBackgroundProducer bg = new GradiatedBackgroundProducer();
      bg.setFromColor(Color.white);
      bg.setToColor(Color.yellow);
      .addBackground(bg)
      

      【讨论】:

        【解决方案3】:

        如果有人仍在寻找解决方案,请像下面那样扩展 SimpleCaptchaServlet 并将这个新的 servlet 映射到 web.xml 中。这对我有用

        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);
             }
        
         }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-12
          • 1970-01-01
          • 2021-04-29
          • 1970-01-01
          相关资源
          最近更新 更多