Benjamin: Captcha-System der erzeuge font(string) ist zu klein ... hilfe!

Hallo

ich schreibe gerade ein Captcha-System für meine Kontakt Formulare
aber der erzeugte text ist meiner meinung nach viel zu klein im Bild

[CODE=PHP]
<?php
header ("Content-type: image/png");
  list($usec, $sec) = explode(' ', microtime());
  srand ((float) $sec + ((float) $usec * 100000));
  for($i=0; $i< 10; $i++)
  {
   $x[] = rand(1,149);
 $x2[] = rand(1,149);
 $y[] = rand(1,49);
 $y2[] = rand(1,49);
  }
$string = substr(sha1(microtime()),0,4);
$image = @imagecreate(150, 50);
$blue = imagecolorallocate($image, 46, 67, 109);
$white = imagecolorallocate($image,  255, 255, 255);
$green = imagecolorallocate($image,  210, 217, 50);
imagestring($image, 5, rand(1,100), rand(1, 35),  $string, $white);
for($i=0; $i<sizeof($x); $i++)
{
 imageline ($image, $x[$i], $y[$i], $x2[$i], $y2[$i], $green );
}
imagepng($image);
imagedestroy($image);
?>
[/CODE]

da ist der code
und auf http://k-check.com/cani/capta.php  ist ne testversion

bei int imagestring ( resource $im, int $font, int $x, int $y, string $s, int $col )

der $font ... ist ja ein wert von 1 bis 5 ... (intern) aber laut php.net kann man auch ein externen wert setzen der immer über 5 liegt ... aber wie :(

Mfg Benjamin

  1. Moin!

    bei int imagestring ( resource $im, int $font, int $x, int $y, string $s, int $col )

    der $font ... ist ja ein wert von 1 bis 5 ... (intern) aber laut php.net kann man auch ein externen wert setzen der immer über 5 liegt ... aber wie :(

    Indem man einfach einen passenden Wert übergibt - nachdem man imageloadfont benutzt hat, um diesem Wert einen Bitmapfont zuzuweisen. Ansonsten gehen nur Werte zwischen 1 und 5.

    imagestring() ist nach meinem Empfinden nur nützlich, wenn man 1. keine Truetype-Fonts einsetzen will oder kann und 2. tatsächlich kleine Schriften benötigt, die bitmapgenau geschrieben werden müssen (TrueType neigt bei kleiner Schriftgröße eventuell zum Verpixeln).

    imagettftext() ist besser.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. imagettftext() ist besser.

      imagettftext ($image, 14, 0, rand(1,100),rand(14, 35), $white, "font/arial.ttf",$string);

      Danke :)

      geht super