C library that makes captcha.

Lucy McClane a97050d5ad preset square/noise vor 3 Jahren
examples bc18e51901 libcaptcha untested vor 3 Jahren
patterns bc18e51901 libcaptcha untested vor 3 Jahren
src a97050d5ad preset square/noise vor 3 Jahren
test a97050d5ad preset square/noise vor 3 Jahren
ttf bc18e51901 libcaptcha untested vor 3 Jahren
.gitignore 5ec95f24a2 initial commit vor 3 Jahren
LICENSE bc18e51901 libcaptcha untested vor 3 Jahren
Makefile.am bc18e51901 libcaptcha untested vor 3 Jahren
README.md a97050d5ad preset square/noise vor 3 Jahren
bootstrap bc18e51901 libcaptcha untested vor 3 Jahren
configure.ac a97050d5ad preset square/noise vor 3 Jahren

README.md

Libcaptcha

Highly customizable captcha making library.

some squares

Features

  • TTF font support
  • UTF-8 support, you can use any glyph
  • An easy API (I suppose)
  • Zero dependencies
  • Entirely written in C

How to install

It is as simple as

./bootstrap
./configure
make
make install

How to use

First of all we need some text, and this text should be placed using some random values. Don't warry, preset functions make all those random stuff by itself.

Here is example how to use lc_preset_text() :

  lc_bmp * text = lc_preset_text( // returns single channel lc_bmp*
    "path_to_font.ttf",           // path to font file
    "HELLOWORLD",                 // our text
    38,                           // minimum font size
    50,                           // maximum font size (if zero, all glyphs will be 38)
    1,                            // 1 - rotate characters, 0 - off
    10,                           // horizontal random offset
    10);                          // vertical random offset

There's some simply functions that make noise and square captchas.

  lc_bmp * bmp = lc_preset_square(
    text,                         // is our font object with text
    1,                            // spacing
    2);                           // square size (2 is very small)

Lets save our image into a png file:

 lc_save_png("helloworld.png", bmp);

Don't forget to free() memory:

  lc_free(bmp);
  lc_free(text);

Also you can make some noisy pattern instead of squares, its usage is simple:

  lc_bmp * noise = lc_preset_noise(text);

That's it.

Advanced Use

Check out examples

Get familiar with general concept. example1.c

example1

How to make a random sized glyphs. example2.c

example2

Apply random positions for glyphs. example3.c

example3

Get familiar with patterns made from png images. example4.c

example4

Patterns, patterns everywhere. example5.c

example5

Some crazy stuff. example6.c

example6

Don't forget to use lc_free() to free all the stuff libcaptcha returns to you.

I've noticed that it is very easy to get lost sometimes, just use valgrind.

License

GPLv2