view pycaptcha/Captcha/Visual/Tests.py @ 98:f3f4fee77a25

merge
author Xavier Glorot <glorotxa@iro.umontreal.ca>
date Thu, 11 Feb 2010 16:36:30 -0500
parents 4775b4195b4b
children
line wrap: on
line source

""" Captcha.Visual.Tests

Visual CAPTCHA tests
"""
#
# PyCAPTCHA Package
# Copyright (C) 2004 Micah Dowty <micah@navi.cx>
#

from Captcha.Visual import Text, Backgrounds, Distortions, ImageCaptcha
from Captcha import Words
import random

__all__ = ["PseudoGimpy", "AngryGimpy", "AntiSpam"]


class PseudoGimpy(ImageCaptcha):
    """A relatively easy CAPTCHA that's somewhat easy on the eyes"""
    def getLayers(self):
        word = Words.defaultWordList.pick()
        self.addSolution(word)
        return [
           # random.choice([
           #     Backgrounds.CroppedImage(),
           #     Backgrounds.TiledImage(),
           # ]),
            Text.TextLayer(word, borderSize=1),
            Distortions.SineWarp(),
            ]


class AngryGimpy(ImageCaptcha):
    """A harder but less visually pleasing CAPTCHA"""
    def getLayers(self):
        word = Words.defaultWordList.pick()
        self.addSolution(word)
        return [
           # suppression du background 
           # Backgrounds.TiledImage(),
           # Backgrounds.RandomDots(),
            Text.TextLayer(word, borderSize=1),
	   # Distortions.SineWarp(periodRange    = (0.04, 0.07))
            Distortions.WigglyBlocks(),
              ]


class AntiSpam(ImageCaptcha):
    """A fixed-solution CAPTCHA that can be used to hide email addresses or URLs from bots"""
    fontFactory = Text.FontFactory(20, "vera/VeraBd.ttf")
    defaultSize = (512,50)

    def getLayers(self, solution="murray@example.com"):
        self.addSolution(solution)

        textLayer = Text.TextLayer(solution,
                                   borderSize = 2,
                                   fontFactory = self.fontFactory)

        return [
            Backgrounds.CroppedImage(),
            textLayer,
            Distortions.SineWarp(amplitudeRange = (3, 5)),
            ]

### The End ###