【问题标题】:How to play the Text behind the SimpleCaptcha Image如何播放 SimpleCaptcha 图像后面的文本
【发布时间】:2016-05-04 16:30:41
【问题描述】:

很高兴来到这里。

我有一个简单的问题。我正在使用 simplecaptcha1.2.1.jar (http://simplecaptcha.sourceforge.net/) 开发应用程序。

一切都很好,我知道如何使用 SimpleCaptcha API 和 AudioCaptcha,并且我知道如何使用 AudioCaptcha ac = new AudioCaptcha.Builder() 和 Captcha captcha = new Captcha.Builder(400, 100) 自定义创建我的 Servlet .

我想知道的是将Simple Captcha后面的Image中出现的文本与AudioCaptcha后面的音频同步,基本上你所见即所得。

关于如何播放和听到图像背后的文字有什么想法吗?

我会感激不尽的。

最好的问候

马塞尔·阿吉亚尔

【问题讨论】:

    标签: javascript java jsp captcha java-ee-6


    【解决方案1】:

    对于那些回答我使用 simplecaptcha API 1.2(如何在 Audio 和 Captcha Image 之间同步代码)的问题的人,这里遵循我的结论,以便我们之间分享。

    步骤 1_) AudioCaptcha 原始实现只接受数字,因此,您必须使用 NumberAnswerProducer 而不是使用 DefaultTextProducer

    TextProducer tp = new NumbersAnswerProducer(4,true);
    
    new AudioCaptcha.Builder()
    .addVoice()
    .addAnswer(tp)
    .build());
    

    您可以运行测试,如果您尝试将 DefaultTextProducer() 传递给 AudioCaptcha 构建器,它将失败。


    步骤 2_) 为 Captcha 和 AudioCaptcha 共享相同的 TextProducer

    我从 SimpleCaptcha 的 GIT 存储库中克隆了项目,以了解有关“AudioCaptcha.Builder().addAnswer(tp)”和 Captcha.Builder(400, 100).addText(tp) 的更多信息

    如果你尝试这个,你会看到,甚至共享同一个 TextProducer 实例 tp = new NumbersAnswerProducer(4,true);对于两者,您将永远(我的意思是永远相信我),图像和音频背后的不同代码。 为什么?

    因为在 .addAnswer(tp) 和 .addText(tp) 的实现之后,代码调用了一个名为 .getText() 的方法,即使对于 TextProducer 的同一个实例也是如此。而这个getText背后有一个随机码:

    public String getText() {
    String capText = "";
    for (int i = 0; i < _length; i++) {
    capText += _srcChars[RAND.nextInt(_srcChars.length)];
    }
    return capText;
    }
    

    因此,同样,即使使用相同的 TextProducer 实例,每次调用 .addAnswer(tp) 和 .addText(tp) 时都会有不同的代码,因为在这些人后面它们会调用 getText()。

    最后,我发现解决这个问题的一种方法是,我必须在 TextProducer 后面创建自己的 getText() 实现,才能让 Captcha 和 AudioCaptcha 具有相同的值。

    最好的问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多