mirror of
https://github.com/librecaptcha/lc-core.git
synced 2025-01-27 13:03:12 -05:00
rain drop single frame
This commit is contained in:
parent
23e8d0a7ed
commit
9d9657d373
53
src/main/scala/lc/RainDropsCaptcha.scala
Normal file
53
src/main/scala/lc/RainDropsCaptcha.scala
Normal file
@ -0,0 +1,53 @@
|
||||
package lc
|
||||
|
||||
import java.awt.image.BufferedImage
|
||||
import java.awt.RenderingHints
|
||||
import java.awt.Font
|
||||
import java.awt.Color
|
||||
import java.io.ByteArrayOutputStream
|
||||
import javax.imageio.ImageIO
|
||||
|
||||
class RainDropsCP extends ChallengeProvider {
|
||||
private val alphabet = "abcdefghijklmnopqrstuvwxyz"
|
||||
private val n = 8
|
||||
|
||||
def getId = "FilterChallenge"
|
||||
|
||||
def returnChallenge(): Challenge = {
|
||||
val r = new scala.util.Random
|
||||
val secret = Stream.continually(r.nextInt(alphabet.size)).map(alphabet).take(n).mkString
|
||||
val width = 225
|
||||
val height = 100
|
||||
|
||||
val canvas = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB)
|
||||
val g = canvas.createGraphics()
|
||||
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)
|
||||
|
||||
// clear the canvas
|
||||
g.setColor(Color.WHITE)
|
||||
g.fillRect(0, 0, canvas.getWidth, canvas.getHeight)
|
||||
|
||||
// paint the rain
|
||||
g.setColor(Color.BLACK)
|
||||
val xOffset = 1+r.nextInt(10)
|
||||
val yOffset = 1+r.nextInt(10)
|
||||
for (i <- 0 until 1000) {
|
||||
val x = r.nextInt(width)
|
||||
val y = r.nextInt(height)
|
||||
g.drawLine(x, y, x+xOffset, y+yOffset)
|
||||
}
|
||||
|
||||
// paint the text
|
||||
g.setColor(Color.WHITE)
|
||||
g.setFont(new Font("Sans", Font.BOLD, 42))
|
||||
g.drawString(secret, 5, 50)
|
||||
|
||||
g.dispose()
|
||||
val baos = new ByteArrayOutputStream();
|
||||
ImageIO.write(canvas,"png",baos);
|
||||
new Challenge(baos.toByteArray, "image/png", secret)
|
||||
}
|
||||
def checkAnswer(secret: String, answer: String): Boolean = {
|
||||
secret == answer
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user