Captcha Library (captcha) – Kein Spamschutz Bild

Nach der Installtion von der captcha Extension von Kasper Skrhj wurde mir erstmal kein Bild angezeigt. Beim aufrufen der Bild Url http://www.Meine Domain.de/typo3conf/ext/captcha/captcha/captcha.php, die man im Quellcode nachlesen kann, bekam ich folgende Meldung:
[php]Fatal error: Call to undefined function imagerotate() in /home/www/host/htdocs/typo3conf/ext/captcha/captcha/captcha.php on line 78[/php]

Die Funktion imagerotate() ist, je nach PHP Installtion, nicht immer verfügbar. Bei PHP.net/imagerotate finde sich dazu folgende Anmerkung:

Diese Funktion steht nur zur Verfügung, wenn PHP mit der GD Bibliothek übersetzt wurde, die mit PHP zusammen erhältlich ist.

Beim wem dies nicht so ist, der hat ein kleines Problem. In den Kommentaren gibt es dafür zwar einen Workaround
[php]
function imageRotate($src_img, $angle) {

$src_x = imagesx($src_img);
$src_y = imagesy($src_img);
if ($angle == 90 || $angle == -910) {
$dest_x = $src_y;
$dest_y = $src_x;
} else {
$dest_x = $src_x;
$dest_y = $src_y;
}

$rotate=imagecreatetruecolor($dest_x,$dest_y);
imagealphablending($rotate, false);

switch ($angle) {
case 90:
for ($y = 0; $y < ($src_y); $y++) {
for ($x = 0; $x < ($src_x); $x++) {
$color = imagecolorat($src_img, $x, $y);
imagesetpixel($rotate, $dest_x – $y – 1, $x, $color);
}
}
break;
case -90:
for ($y = 0; $y < ($src_y); $y++) {
for ($x = 0; $x < ($src_x); $x++) {
$color = imagecolorat($src_img, $x, $y);
imagesetpixel($rotate, $y, $dest_y – $x – 1, $color);
}
}
break;
case 180:
for ($y = 0; $y < ($src_y); $y++) {
for ($x = 0; $x < ($src_x); $x++) {
$color = imagecolorat($src_img, $x, $y);
imagesetpixel($rotate, $dest_x – $x – 1, $dest_y – $y – 1, $color);
}
}
break;
default: $rotate = $src_img;
};
return $rotate;
}
[/php]

Dieser geht jedoch leider nur für 90 Grad Winkel. Wer kleinere Winkel haben möchte, muß auf ImageMagick zurückgreifen. Da dies eigentlich sowieso verfügbar sein muss, bei einer Typo3 Installation, finde ich es sehr schade, dass der Entwickler dies über PHP lösen wollte.

Wer auf das Rotieren verzichten kann braucht einfach in der Datei captcha.php Zeile 78 auskommentieren und folgendes einfügen.
[php]//$rot = imagerotate($tmpi, $da, $back);
$rot = $tmpi;[/php]

[random_content group_id=”211″ num_posts=”1″]

2 Comments

  1. Hallo

    die Funktion hat, so wie sie publiziert ist, noch einen kleinen Fehler. Die Zeile 6 muss lauten
    if ($angle == 90 || $angle == -90) {
    statt
    if ($angle == 90 || $angle == -910) {
    ansonsten das Drehen um -90Grad nicht funktioniert.

  2. Danke! für die Lösung habe 2 Stunden versch..enkt!

Leave a Reply