2013-05-30 2 views
1

Я использую плагин simpleCatcha для своего приложения java. Созданное изображение captcha не читается, поэтому я хочу изменить стиль изображения. Есть ли способ настроить или изменить стиль изображения. HTML является:Изменить стиль изображения в simpleCaptcha

<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 плагин для капчи

ответ

1

Если вы установите флажок исходный код для nl.captcha.servlet.SimpleCaptchaServlet, width, height и FontColors были предопределены. Это можно найти в файле simplecaptcha-1.1.1.jar. Ниже снимок экрана для справки.

SimpleCaptchaServlet

Относительно краев слова рендереров, это обрабатывается в ColoredEdgesWordRenderer классе & других, которые делают некоторые вычисления на xBaseline, yBaseline, shape и т.д. и достигает угол, при котором должны быть показаны слова капчи.

Моя ставка заключается в том, чтобы достичь того, чего вы хотите, вам либо нужно отредактировать исходный код, либо создать собственную банку и перераспределить ее. Это связано с тем, что параметры не берутся из файла web.xml. Или обратите внимание на какой-нибудь другой код, который, по вашему мнению, легче идентифицировать. Но, предположение, чем сложнее выглядит ваш captcha, тем больше безопасности он добавит.

ColoredEdges

1

Вы можете переопределить SimpleCaptchaServlet используя свой собственный сервлет и использовать вместо. Тогда вы должны быть в состоянии удалить и изменить цвет фона или шума или границы

Пример: .addBackground (новый FlatColorBackgroundProducer (Color.LIGHT_GRAY))

или

GradiatedBackgroundProducer BG = новый GradiatedBackgroundProducer(); bg.setFromColor (Color.white); bg.setToColor (Color.yellow); .addBackground (bg)

0

Если кто-то все еще ищет решение, простирайте SimpleCaptchaServlet, как показано ниже, и сопоставьте этот новый сервлет в 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); 
    } 

} 
Смежные вопросы