gpt4 book ai didi

php - 调用未定义函数 imagerotate()

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:01:48 25 4
gpt4 key购买 nike

我想我这里有一个奇怪的错误。

Fatal error: Call to undefined function imagerotate() in /var/www/web/html/include/php/class/image.class.php on line 30

第 30 行:

$im = imagerotate( $this->res, $degrees, $bkg );

根据 the PHP documentation , imagerotate() 从 PHP 4 开始应该是一个函数,而我使用的是 PHP 5。

为什么不起作用?其他图像函数,如 imagecreatefromjpeg()imagejpeg() 工作正常。

来自 phpinfo() 的 GD 信息:

GD 支持已启用
GD 版本 2.0 或更高版本
FreeType 支持已启用
FreeType 链接与 freetype
FreeType 版本 2.3.7
T1Lib 支持已启用
GIF 阅读支持已启用
GIF 创建支持已启用
JPG 支持启用
PNG 支持已启用
WBMP 支持启用

最佳答案

page你链接到它清楚地说

Note: This function is only available if PHP is compiled with the bundled version of the GD library.

还有一个comments

This function apparently contains a memory leak. Because of this, it was kept out of the GD library that comes with Ubuntu (and I assume other OS'es, too).

So, If you are running Ubuntu and wonder why you get "Call to undefined function imagerotate()" even though you seemingly have the correct GD lib installed, this is why. Use the alternative supplied by beau at dragonflydevelopment dot com instead. It works flawlessly (for angles in steps of 90 degrees).

On a side-note, some other GD image functions (unfortunately, the more interesting ones) suffer from the same problem and are kept out of the Ubuntu distribution as well.

有关可能的解决方案,请查看 here

代码复制自 http://www.php.net/manual/en/function.imagerotate.php#93151并修改

if (!function_exists('imagerotate')) {

/*
Imagerotate replacement. ignore_transparent is work for png images
Also, have some standard functions for 90, 180 and 270 degrees.
Rotation is clockwise
*/

function imagerotate_rotateX($x, $y, $theta) {
return $x * cos($theta) - $y * sin($theta);
}

function imagerotate_rotateY($x, $y, $theta) {
return $x * sin($theta) + $y * cos($theta);
}

function imagerotate($srcImg, $angle, $bgcolor = 0, $ignore_transparent = 0) {
$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(
imagerotate_rotateX(0, 0, 0 - $theta),
imagerotate_rotateX($srcw, 0, 0 - $theta),
imagerotate_rotateX(0, $srch, 0 - $theta),
imagerotate_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(
imagerotate_rotateY(0, 0, 0 - $theta),
imagerotate_rotateY($srcw, 0, 0 - $theta),
imagerotate_rotateY(0, $srch, 0 - $theta),
imagerotate_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(imagerotate_rotateX($x, $y, $theta));
$srcY = round(imagerotate_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;
}

}

关于php - 调用未定义函数 imagerotate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5406771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com