From 1a41724fdc45b09afb004607ae627990947320b3 Mon Sep 17 00:00:00 2001 From: hrj Date: Sat, 24 Apr 2021 22:36:25 +0530 Subject: [PATCH] popping characters captcha: don't show prev char for the first char Signed-off-by: hrj --- src/main/java/lc/captchas/PoppingCharactersCaptcha.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/lc/captchas/PoppingCharactersCaptcha.java b/src/main/java/lc/captchas/PoppingCharactersCaptcha.java index 4ce15b4..0ffa4df 100644 --- a/src/main/java/lc/captchas/PoppingCharactersCaptcha.java +++ b/src/main/java/lc/captchas/PoppingCharactersCaptcha.java @@ -65,10 +65,12 @@ private byte[] gifCaptcha(final String text) { final var prevColor = Color.getHSBColor(0f, 0f, 0.1f); IntStream.range(0, text.length()).forEach(i -> { final var color = Color.getHSBColor(HelperFunctions.randomNumber(0, 100)/100.0f, 0.6f, 1.0f); - final var prevI = (i - 1 + text.length()) % text.length(); final var nextImage = makeImage((g) -> { - g.setColor(prevColor); - g.drawString(String.valueOf(text.charAt(prevI)), advances[prevI] + jitter(), 45 + jitter()); + if (i > 0) { + final var prevI = (i - 1) % text.length(); + g.setColor(prevColor); + g.drawString(String.valueOf(text.charAt(prevI)), advances[prevI] + jitter(), 45 + jitter()); + } g.setColor(color); g.drawString(String.valueOf(text.charAt(i)), advances[i] + jitter(), 45 + jitter()); });