PHP Fatal error: Call to undefined function imagerotate() debian

Столкнулся с проблемой отсутствие в сборке debian функции imagerotate(). Выкладываю пример решения данной проблемы на примере решения для Not Captcha Открываем /wp-content/plugins/wp-notcaptcha/lib/notcaptcha.php находим строку
$angles = explode('|', $angles);
в версии 1.2 находим
< ?php
/*      
* myWebNotCaptcha 1.2 
* Created by WebJema 2009 
* See notcaptcha_config.php for customizing 
* www.webjema.com 
*/      
 
require(dirname(__FILE__).'/notcaptcha_config.php'); 
if ($_SESSION['nc_session'] != session_id()) { 
        die('session error'); 
}
добавляем
< ?php
 
if(!function_exists("imagerotate")) {
    function imagerotate($srcImg, $angle, $bgcolor=0, $ignore_transparent = 0) {
        return imagerotateEquivalent($srcImg, $angle, $bgcolor, $ignore_transparent);
    }
}
 
/*
    Imagerotate replacement. ignore_transparent is work for png images
    Also, have some standard functions for 90, 180 and 270 degrees.
    Rotation is clockwise
*/
 
function imagerotateEquivalent($srcImg, $angle, $bgcolor, $ignore_transparent = 0) {
    function rotateX($x, $y, $theta){
        return $x * cos($theta) - $y * sin($theta);
    }
    function rotateY($x, $y, $theta){
        return $x * sin($theta) + $y * cos($theta);
    }
 
    $srcw = imagesx($srcImg);
    $srch = imagesy($srcImg);
 
    //Normalize angle
    $angle %= 360;
    //Set rotate to clockwise
    $angle = -$angle;
 
    if($angle == 0) {
        if ($ignore_transparent == 0) {
            imagesavealpha($srcImg, true);
        }
        return $srcImg;
    }
 
    // Convert the angle to radians
    $theta = deg2rad ($angle);
 
    //Standart case of rotate
    if ( (abs($angle) == 90) || (abs($angle) == 270) ) {
        $width = $srch;
        $height = $srcw;
        if ( ($angle == 90) || ($angle == -270) ) {
            $minX = 0;
            $maxX = $width;
            $minY = -$height+1;
            $maxY = 1;
        } else if ( ($angle == -90) || ($angle == 270) ) {
            $minX = -$width+1;
            $maxX = 1;
            $minY = 0;
            $maxY = $height;
        }
    } else if (abs($angle) === 180) {
        $width = $srcw;
        $height = $srch;
        $minX = -$width+1;
        $maxX = 1;
        $minY = -$height+1;
        $maxY = 1;
    } else {
        // Calculate the width of the destination image.
        $temp = array (rotateX(0, 0, 0-$theta),
        rotateX($srcw, 0, 0-$theta),
        rotateX(0, $srch, 0-$theta),
        rotateX($srcw, $srch, 0-$theta)
        );
        $minX = floor(min($temp));
        $maxX = ceil(max($temp));
        $width = $maxX - $minX;
 
        // Calculate the height of the destination image.
        $temp = array (rotateY(0, 0, 0-$theta),
        rotateY($srcw, 0, 0-$theta),
        rotateY(0, $srch, 0-$theta),
        rotateY($srcw, $srch, 0-$theta)
        );
        $minY = floor(min($temp));
        $maxY = ceil(max($temp));
        $height = $maxY - $minY;
    }
 
    $destimg = imagecreatetruecolor($width, $height);
    if ($ignore_transparent == 0) {
        imagefill($destimg, 0, 0, imagecolorallocatealpha($destimg, 255,255, 255, 127));
        imagesavealpha($destimg, true);
    }
 
    // sets all pixels in the new image
    for($x=$minX; $x<$maxX; $x++) {
        for($y=$minY; $y<$maxY; $y++) {
            // fetch corresponding pixel from the source image
            $srcX = round(rotateX($x, $y, $theta));
            $srcY = round(rotateY($x, $y, $theta));
            if($srcX >= 0 && $srcX < $srcw && $srcY >= 0 && $srcY < $srch) {
                $color = imagecolorat($srcImg, $srcX, $srcY );
            } else {
                $color = $bgcolor;
            }
            imagesetpixel($destimg, $x-$minX, $y-$minY, $color);
        }
    }
    return $destimg;
}
?>
Human test by Not Captcha
VN:D [1.9.22_1171]
Rating: 10.0/10 (1 vote cast)
VN:D [1.9.22_1171]
Rating: +1 (from 1 vote)
PHP Fatal error: Call to undefined function imagerotate() debian, 10.0 out of 10 based on 1 rating

7 комментариев: PHP Fatal error: Call to undefined function imagerotate() debian

  • Неделю голову ломал, как же обойти функцию imagerotate() . Все работает, респект.

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  • avatar
    Алина:

    Спасибо, Slawka, большое! 🙂

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  • avatar
    Герман:

    Народ, она переварачивает картинку не в ту сторону, не на нужный угол..(

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  • @Герман
    А подробнее ?

    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  • Nice site ….)

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  • avatar
    eugenik:

    Как решить проблему отсутствия функции imagerotate() на debian lenny не компилируя gd из исходников:
    1. скачиваем расширение gd.so отсюда (скомпилировано под php5-gd_5.2.6.dfsg.1-1+lenny8_i386, тестировал на lenny10_386)
    2. бэкапим файл usr\lib\php5\20060613+lfs\gd.so
    3. заменяем usr\lib\php5\20060613+lfs\gd.so на файл скаченный в пункте 1
    4. блокируем обновление gd при вызове apt-get upgrade:
    echo «php5-gd hold» | dpkg —set-selections
    (включить обратно: echo «php5-gd install» | dpkg —set-selections)
    5. /etc/init.d/apache2 restart
    6. недостающие функции должны работать, в том числе и imagerotate()

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Login

Рубрики

Праздники

Армейские праздники

Счетчики

Яндекс.Метрика